@@ -0,0 +1,29 @@ |
||
| 1 |
+# EditorConfig is awesome: http://EditorConfig.org |
|
| 2 |
+ |
|
| 3 |
+# top-most EditorConfig file |
|
| 4 |
+root = true |
|
| 5 |
+ |
|
| 6 |
+# Unix-style newlines with a newline ending every file |
|
| 7 |
+[*] |
|
| 8 |
+end_of_line = lf |
|
| 9 |
+insert_final_newline = false |
|
| 10 |
+ |
|
| 11 |
+# 4 space indentation |
|
| 12 |
+[*.py] |
|
| 13 |
+indent_style = space |
|
| 14 |
+indent_size = 4 |
|
| 15 |
+ |
|
| 16 |
+# Tab indentation (no size specified) |
|
| 17 |
+[*.js] |
|
| 18 |
+indent_style = space |
|
| 19 |
+indent_size = 4 |
|
| 20 |
+ |
|
| 21 |
+# Tab indentation (no size specified) |
|
| 22 |
+[*.html] |
|
| 23 |
+indent_style = space |
|
| 24 |
+indent_size = 4 |
|
| 25 |
+ |
|
| 26 |
+# Matches the exact files either package.json or .travis.yml |
|
| 27 |
+[{package.json,.travis.yml}]
|
|
| 28 |
+indent_style = space |
|
| 29 |
+indent_size = 2 |
@@ -0,0 +1,31 @@ |
||
| 1 |
+*.db |
|
| 2 |
+*.swp |
|
| 3 |
+*.idea |
|
| 4 |
+*.sqlite3 |
|
| 5 |
+*.DS_Store |
|
| 6 |
+*.python-version |
|
| 7 |
+ |
|
| 8 |
+# Compiled python modules. |
|
| 9 |
+*.pyc |
|
| 10 |
+ |
|
| 11 |
+# Setuptools distribution folder. |
|
| 12 |
+/build/ |
|
| 13 |
+/dist/ |
|
| 14 |
+ |
|
| 15 |
+# Python egg metadata, regenerated from source files by setuptools. |
|
| 16 |
+/*.egg-info |
|
| 17 |
+/*.egg |
|
| 18 |
+ |
|
| 19 |
+# Locked file for Excel etc |
|
| 20 |
+.~lock.* |
|
| 21 |
+ |
|
| 22 |
+# Django File |
|
| 23 |
+local_settings.py |
|
| 24 |
+local_settings_dev.py |
|
| 25 |
+ |
|
| 26 |
+# Django Dir |
|
| 27 |
+media/ |
|
| 28 |
+collect_static/ |
|
| 29 |
+ |
|
| 30 |
+# Qiniu |
|
| 31 |
+.qiniu_pythonsdk_hostscache.json |
@@ -0,0 +1,2 @@ |
||
| 1 |
+# Default ignored files |
|
| 2 |
+/workspace.xml |
@@ -0,0 +1,6 @@ |
||
| 1 |
+<component name="InspectionProjectProfileManager"> |
|
| 2 |
+ <settings> |
|
| 3 |
+ <option name="USE_PROJECT_PROFILE" value="false" /> |
|
| 4 |
+ <version value="1.0" /> |
|
| 5 |
+ </settings> |
|
| 6 |
+</component> |
@@ -0,0 +1,7 @@ |
||
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<project version="4"> |
|
| 3 |
+ <component name="JavaScriptSettings"> |
|
| 4 |
+ <option name="languageLevel" value="ES6" /> |
|
| 5 |
+ </component> |
|
| 6 |
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (py3)" project-jdk-type="Python SDK" /> |
|
| 7 |
+</project> |
@@ -0,0 +1,8 @@ |
||
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<project version="4"> |
|
| 3 |
+ <component name="ProjectModuleManager"> |
|
| 4 |
+ <modules> |
|
| 5 |
+ <module fileurl="file://$PROJECT_DIR$/.idea/thermometer.iml" filepath="$PROJECT_DIR$/.idea/thermometer.iml" /> |
|
| 6 |
+ </modules> |
|
| 7 |
+ </component> |
|
| 8 |
+</project> |
@@ -0,0 +1,26 @@ |
||
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<module type="PYTHON_MODULE" version="4"> |
|
| 3 |
+ <component name="FacetManager"> |
|
| 4 |
+ <facet type="django" name="Django"> |
|
| 5 |
+ <configuration> |
|
| 6 |
+ <option name="rootFolder" value="$MODULE_DIR$" /> |
|
| 7 |
+ <option name="settingsModule" value="templet/settings.py" /> |
|
| 8 |
+ <option name="manageScript" value="$MODULE_DIR$/manage.py" /> |
|
| 9 |
+ <option name="environment" value="<map/>" /> |
|
| 10 |
+ <option name="doNotUseTestRunner" value="false" /> |
|
| 11 |
+ <option name="trackFilePattern" value="migrations" /> |
|
| 12 |
+ </configuration> |
|
| 13 |
+ </facet> |
|
| 14 |
+ </component> |
|
| 15 |
+ <component name="NewModuleRootManager"> |
|
| 16 |
+ <content url="file://$MODULE_DIR$" /> |
|
| 17 |
+ <orderEntry type="jdk" jdkName="Python 3.7 (py3)" jdkType="Python SDK" /> |
|
| 18 |
+ <orderEntry type="sourceFolder" forTests="false" /> |
|
| 19 |
+ </component> |
|
| 20 |
+ <component name="TemplatesService"> |
|
| 21 |
+ <option name="TEMPLATE_CONFIGURATION" value="Django" /> |
|
| 22 |
+ </component> |
|
| 23 |
+ <component name="TestRunnerService"> |
|
| 24 |
+ <option name="PROJECT_TEST_RUNNER" value="pytest" /> |
|
| 25 |
+ </component> |
|
| 26 |
+</module> |
@@ -0,0 +1,6 @@ |
||
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<project version="4"> |
|
| 3 |
+ <component name="VcsDirectoryMappings"> |
|
| 4 |
+ <mapping directory="$PROJECT_DIR$" vcs="Git" /> |
|
| 5 |
+ </component> |
|
| 6 |
+</project> |
@@ -0,0 +1,8 @@ |
||
| 1 |
+# See the menu of settings available here: |
|
| 2 |
+# https://github.com/timothycrosley/isort/wiki/isort-Settings |
|
| 3 |
+ |
|
| 4 |
+[settings] |
|
| 5 |
+indent=' ' |
|
| 6 |
+line_length=120 |
|
| 7 |
+lines_after_imports=2 |
|
| 8 |
+skip=build,migrations,.tox |
@@ -0,0 +1,2 @@ |
||
| 1 |
+# Django |
|
| 2 |
+ * https://docs.djangoproject.com/en/dev/releases/ |
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.contrib import admin |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Register your models here. |
@@ -0,0 +1,8 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.apps import AppConfig |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+class ApiConfig(AppConfig): |
|
| 8 |
+ name = 'api' |
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.db import models |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Create your models here. |
@@ -0,0 +1,27 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from __future__ import division |
|
| 4 |
+ |
|
| 5 |
+from django.conf import settings |
|
| 6 |
+from django.db import transaction |
|
| 7 |
+from django.shortcuts import redirect |
|
| 8 |
+from django.urls import reverse |
|
| 9 |
+from furl import furl |
|
| 10 |
+ |
|
| 11 |
+from utils.redis.connect import r |
|
| 12 |
+from utils.user.userinfo_save import userinfo_save |
|
| 13 |
+ |
|
| 14 |
+ |
|
| 15 |
+@transaction.atomic |
|
| 16 |
+def oauth_redirect(request): |
|
| 17 |
+ # Save profile or something else |
|
| 18 |
+ user = userinfo_save(request.GET) |
|
| 19 |
+ |
|
| 20 |
+ token_check_key = getattr(user, settings.TOKEN_CHECK_KEY) |
|
| 21 |
+ |
|
| 22 |
+ query_params = {
|
|
| 23 |
+ settings.TOKEN_CHECK_KEY: token_check_key, |
|
| 24 |
+ 'vtoken': r.token(token_check_key, ex=False, buf=False), |
|
| 25 |
+ } |
|
| 26 |
+ |
|
| 27 |
+ return redirect(furl(reverse('page:user_oauth')).add(request.GET).add(query_params).url)
|
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.test import TestCase |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Create your tests here. |
@@ -0,0 +1,14 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from django.conf.urls import url |
|
| 4 |
+ |
|
| 5 |
+from api import oauth_views |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+urlpatterns = [ |
|
| 9 |
+] |
|
| 10 |
+ |
|
| 11 |
+urlpatterns += [ |
|
| 12 |
+ url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'), |
|
| 13 |
+ url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'), |
|
| 14 |
+] |
@@ -0,0 +1,4 @@ |
||
| 1 |
+from django.shortcuts import render |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+# Create your views here. |
@@ -0,0 +1,9 @@ |
||
| 1 |
+#!/bin/bash |
|
| 2 |
+ |
|
| 3 |
+echo '>> iSort' |
|
| 4 |
+./isort.sh |
|
| 5 |
+echo |
|
| 6 |
+ |
|
| 7 |
+echo '>> PEP8' |
|
| 8 |
+./pep8.sh |
|
| 9 |
+echo |
@@ -0,0 +1,4 @@ |
||
| 1 |
+from django.contrib import admin |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+# Register your models here. |
@@ -0,0 +1,7 @@ |
||
| 1 |
+from __future__ import unicode_literals |
|
| 2 |
+ |
|
| 3 |
+from django.apps import AppConfig |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+class CommandConfig(AppConfig): |
|
| 7 |
+ name = 'commands' |
@@ -0,0 +1,37 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+import logging |
|
| 4 |
+ |
|
| 5 |
+from django.db import transaction |
|
| 6 |
+from django_six import CompatibilityBaseCommand, close_old_connections |
|
| 7 |
+ |
|
| 8 |
+from utils.redis.connect import r |
|
| 9 |
+ |
|
| 10 |
+ |
|
| 11 |
+logger = logging.getLogger('console')
|
|
| 12 |
+ |
|
| 13 |
+ |
|
| 14 |
+class Command(CompatibilityBaseCommand): |
|
| 15 |
+ def handle(self, *args, **options): |
|
| 16 |
+ |
|
| 17 |
+ logger.info('Thermometer bak cmd is dealing')
|
|
| 18 |
+ |
|
| 19 |
+ while True: |
|
| 20 |
+ # r.rpush('TEMPLET_CMD_KEY', '')
|
|
| 21 |
+ # kv = r.blpop('TEMPLET_CMD_KEY', 60)
|
|
| 22 |
+ # k, v = (kv[0], kv[1]) if kv else (None, None) |
|
| 23 |
+ # |
|
| 24 |
+ # r.rpushjson('TEMPLET_CMD_KEY', {})
|
|
| 25 |
+ k, v = r.blpopjson('TEMPLET_CMD_KEY', 60)
|
|
| 26 |
+ |
|
| 27 |
+ if not v: |
|
| 28 |
+ continue |
|
| 29 |
+ |
|
| 30 |
+ logger.info(v) |
|
| 31 |
+ |
|
| 32 |
+ close_old_connections() |
|
| 33 |
+ |
|
| 34 |
+ with transaction.atomic(): |
|
| 35 |
+ pass |
|
| 36 |
+ |
|
| 37 |
+ close_old_connections() |
@@ -0,0 +1,55 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+import logging |
|
| 4 |
+from collections import deque |
|
| 5 |
+ |
|
| 6 |
+from django.db import transaction |
|
| 7 |
+from django_six import CompatibilityBaseCommand, close_old_connections |
|
| 8 |
+ |
|
| 9 |
+from utils.redis.connect import r |
|
| 10 |
+ |
|
| 11 |
+ |
|
| 12 |
+logger = logging.getLogger('console')
|
|
| 13 |
+ |
|
| 14 |
+ |
|
| 15 |
+class Command(CompatibilityBaseCommand): |
|
| 16 |
+ def handle(self, *args, **options): |
|
| 17 |
+ |
|
| 18 |
+ logger.info('Thermometer bak cmd is dealing')
|
|
| 19 |
+ |
|
| 20 |
+ keys = deque(['TEMPLET_CMD_KEY1', 'TEMPLET_CMD_KEY2']) |
|
| 21 |
+ |
|
| 22 |
+ while True: |
|
| 23 |
+ # r.rpush('TEMPLET_CMD_KEY', '')
|
|
| 24 |
+ # kv = r.blpop('TEMPLET_CMD_KEY', 60)
|
|
| 25 |
+ # k, v = (kv[0], kv[1]) if kv else (None, None) |
|
| 26 |
+ # |
|
| 27 |
+ # r.rpushjson('TEMPLET_CMD_KEY', {})
|
|
| 28 |
+ # |
|
| 29 |
+ # Refer: https://redis.io/commands/blpop |
|
| 30 |
+ # Keys are checked in the order that they are given. |
|
| 31 |
+ # If not rotate keys. |
|
| 32 |
+ # Some keys may not be checked at all times. |
|
| 33 |
+ k, v = r.blpopjson(keys, 60) |
|
| 34 |
+ |
|
| 35 |
+ keys.rotate(1) |
|
| 36 |
+ |
|
| 37 |
+ if not v: |
|
| 38 |
+ continue |
|
| 39 |
+ |
|
| 40 |
+ logger.info(v) |
|
| 41 |
+ |
|
| 42 |
+ close_old_connections() |
|
| 43 |
+ |
|
| 44 |
+ if k == 'TEMPLET_CMD_KEY1': |
|
| 45 |
+ with transaction.atomic(): |
|
| 46 |
+ pass |
|
| 47 |
+ |
|
| 48 |
+ elif k == 'TEMPLET_CMD_KEY2': |
|
| 49 |
+ with transaction.atomic(): |
|
| 50 |
+ pass |
|
| 51 |
+ |
|
| 52 |
+ else: |
|
| 53 |
+ continue |
|
| 54 |
+ |
|
| 55 |
+ close_old_connections() |
@@ -0,0 +1,24 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+import logging |
|
| 4 |
+ |
|
| 5 |
+from django.db import transaction |
|
| 6 |
+from django_six import CompatibilityBaseCommand, close_old_connections |
|
| 7 |
+ |
|
| 8 |
+ |
|
| 9 |
+logger = logging.getLogger('console')
|
|
| 10 |
+ |
|
| 11 |
+ |
|
| 12 |
+class Command(CompatibilityBaseCommand): |
|
| 13 |
+ def handle(self, *args, **options): |
|
| 14 |
+ # Crontab |
|
| 15 |
+ # 5 0 * * * /home/../python /home/../manage.py cmd_bak3 |
|
| 16 |
+ |
|
| 17 |
+ logger.info('Thermometer bak cmd is dealing')
|
|
| 18 |
+ |
|
| 19 |
+ close_old_connections() |
|
| 20 |
+ |
|
| 21 |
+ with transaction.atomic(): |
|
| 22 |
+ pass |
|
| 23 |
+ |
|
| 24 |
+ close_old_connections() |
@@ -0,0 +1,6 @@ |
||
| 1 |
+from __future__ import unicode_literals |
|
| 2 |
+ |
|
| 3 |
+from django.db import models |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+# Create your models here. |
@@ -0,0 +1,4 @@ |
||
| 1 |
+from django.test import TestCase |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+# Create your tests here. |
@@ -0,0 +1,4 @@ |
||
| 1 |
+from django.shortcuts import render |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+# Create your views here. |
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.contrib import admin |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Register your models here. |
@@ -0,0 +1,8 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.apps import AppConfig |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+class DataConfig(AppConfig): |
|
| 8 |
+ name = 'data' |
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.db import models |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Create your models here. |
@@ -0,0 +1,3982 @@ |
||
| 1 |
+{
|
|
| 2 |
+ "86": {
|
|
| 3 |
+ "110000": "北京市", |
|
| 4 |
+ "120000": "天津市", |
|
| 5 |
+ "130000": "河北省", |
|
| 6 |
+ "140000": "山西省", |
|
| 7 |
+ "150000": "内蒙古自治区", |
|
| 8 |
+ "210000": "辽宁省", |
|
| 9 |
+ "220000": "吉林省", |
|
| 10 |
+ "230000": "黑龙江省", |
|
| 11 |
+ "310000": "上海市", |
|
| 12 |
+ "320000": "江苏省", |
|
| 13 |
+ "330000": "浙江省", |
|
| 14 |
+ "340000": "安徽省", |
|
| 15 |
+ "350000": "福建省", |
|
| 16 |
+ "360000": "江西省", |
|
| 17 |
+ "370000": "山东省", |
|
| 18 |
+ "410000": "河南省", |
|
| 19 |
+ "420000": "湖北省", |
|
| 20 |
+ "430000": "湖南省", |
|
| 21 |
+ "440000": "广东省", |
|
| 22 |
+ "450000": "广西壮族自治区", |
|
| 23 |
+ "460000": "海南省", |
|
| 24 |
+ "500000": "重庆市", |
|
| 25 |
+ "510000": "四川省", |
|
| 26 |
+ "520000": "贵州省", |
|
| 27 |
+ "530000": "云南省", |
|
| 28 |
+ "540000": "西藏自治区", |
|
| 29 |
+ "610000": "陕西省", |
|
| 30 |
+ "620000": "甘肃省", |
|
| 31 |
+ "630000": "青海省", |
|
| 32 |
+ "640000": "宁夏回族自治区", |
|
| 33 |
+ "650000": "新疆维吾尔自治区", |
|
| 34 |
+ "710000": "台湾省", |
|
| 35 |
+ "810000": "香港特别行政区", |
|
| 36 |
+ "820000": "澳门特别行政区" |
|
| 37 |
+ }, |
|
| 38 |
+ "110000": {
|
|
| 39 |
+ "110100": "市辖区" |
|
| 40 |
+ }, |
|
| 41 |
+ "110100": {
|
|
| 42 |
+ "110101": "东城区", |
|
| 43 |
+ "110102": "西城区", |
|
| 44 |
+ "110105": "朝阳区", |
|
| 45 |
+ "110106": "丰台区", |
|
| 46 |
+ "110107": "石景山区", |
|
| 47 |
+ "110108": "海淀区", |
|
| 48 |
+ "110109": "门头沟区", |
|
| 49 |
+ "110111": "房山区", |
|
| 50 |
+ "110112": "通州区", |
|
| 51 |
+ "110113": "顺义区", |
|
| 52 |
+ "110114": "昌平区", |
|
| 53 |
+ "110115": "大兴区", |
|
| 54 |
+ "110116": "怀柔区", |
|
| 55 |
+ "110117": "平谷区", |
|
| 56 |
+ "110118": "密云区", |
|
| 57 |
+ "110119": "延庆区" |
|
| 58 |
+ }, |
|
| 59 |
+ "120000": {
|
|
| 60 |
+ "120100": "市辖区" |
|
| 61 |
+ }, |
|
| 62 |
+ "120100": {
|
|
| 63 |
+ "120101": "和平区", |
|
| 64 |
+ "120102": "河东区", |
|
| 65 |
+ "120103": "河西区", |
|
| 66 |
+ "120104": "南开区", |
|
| 67 |
+ "120105": "河北区", |
|
| 68 |
+ "120106": "红桥区", |
|
| 69 |
+ "120110": "东丽区", |
|
| 70 |
+ "120111": "西青区", |
|
| 71 |
+ "120112": "津南区", |
|
| 72 |
+ "120113": "北辰区", |
|
| 73 |
+ "120114": "武清区", |
|
| 74 |
+ "120115": "宝坻区", |
|
| 75 |
+ "120116": "滨海新区", |
|
| 76 |
+ "120117": "宁河区", |
|
| 77 |
+ "120118": "静海区", |
|
| 78 |
+ "120119": "蓟州区" |
|
| 79 |
+ }, |
|
| 80 |
+ "130000": {
|
|
| 81 |
+ "130100": "石家庄市", |
|
| 82 |
+ "130200": "唐山市", |
|
| 83 |
+ "130300": "秦皇岛市", |
|
| 84 |
+ "130400": "邯郸市", |
|
| 85 |
+ "130500": "邢台市", |
|
| 86 |
+ "130600": "保定市", |
|
| 87 |
+ "130700": "张家口市", |
|
| 88 |
+ "130800": "承德市", |
|
| 89 |
+ "130900": "沧州市", |
|
| 90 |
+ "131000": "廊坊市", |
|
| 91 |
+ "131100": "衡水市", |
|
| 92 |
+ "139001": "定州市", |
|
| 93 |
+ "139002": "辛集市" |
|
| 94 |
+ }, |
|
| 95 |
+ "130100": {
|
|
| 96 |
+ "130102": "长安区", |
|
| 97 |
+ "130104": "桥西区", |
|
| 98 |
+ "130105": "新华区", |
|
| 99 |
+ "130107": "井陉矿区", |
|
| 100 |
+ "130108": "裕华区", |
|
| 101 |
+ "130109": "藁城区", |
|
| 102 |
+ "130110": "鹿泉区", |
|
| 103 |
+ "130111": "栾城区", |
|
| 104 |
+ "130121": "井陉县", |
|
| 105 |
+ "130123": "正定县", |
|
| 106 |
+ "130125": "行唐县", |
|
| 107 |
+ "130126": "灵寿县", |
|
| 108 |
+ "130127": "高邑县", |
|
| 109 |
+ "130128": "深泽县", |
|
| 110 |
+ "130129": "赞皇县", |
|
| 111 |
+ "130130": "无极县", |
|
| 112 |
+ "130131": "平山县", |
|
| 113 |
+ "130132": "元氏县", |
|
| 114 |
+ "130133": "赵县", |
|
| 115 |
+ "130183": "晋州市", |
|
| 116 |
+ "130184": "新乐市" |
|
| 117 |
+ }, |
|
| 118 |
+ "130200": {
|
|
| 119 |
+ "130202": "路南区", |
|
| 120 |
+ "130203": "路北区", |
|
| 121 |
+ "130204": "古冶区", |
|
| 122 |
+ "130205": "开平区", |
|
| 123 |
+ "130207": "丰南区", |
|
| 124 |
+ "130208": "丰润区", |
|
| 125 |
+ "130209": "曹妃甸区", |
|
| 126 |
+ "130223": "滦县", |
|
| 127 |
+ "130224": "滦南县", |
|
| 128 |
+ "130225": "乐亭县", |
|
| 129 |
+ "130227": "迁西县", |
|
| 130 |
+ "130229": "玉田县", |
|
| 131 |
+ "130281": "遵化市", |
|
| 132 |
+ "130283": "迁安市" |
|
| 133 |
+ }, |
|
| 134 |
+ "130300": {
|
|
| 135 |
+ "130302": "海港区", |
|
| 136 |
+ "130303": "山海关区", |
|
| 137 |
+ "130304": "北戴河区", |
|
| 138 |
+ "130306": "抚宁区", |
|
| 139 |
+ "130321": "青龙满族自治县", |
|
| 140 |
+ "130322": "昌黎县", |
|
| 141 |
+ "130324": "卢龙县" |
|
| 142 |
+ }, |
|
| 143 |
+ "130400": {
|
|
| 144 |
+ "130402": "邯山区", |
|
| 145 |
+ "130403": "丛台区", |
|
| 146 |
+ "130404": "复兴区", |
|
| 147 |
+ "130406": "峰峰矿区", |
|
| 148 |
+ "130421": "邯郸县", |
|
| 149 |
+ "130423": "临漳县", |
|
| 150 |
+ "130424": "成安县", |
|
| 151 |
+ "130425": "大名县", |
|
| 152 |
+ "130426": "涉县", |
|
| 153 |
+ "130427": "磁县", |
|
| 154 |
+ "130428": "肥乡县", |
|
| 155 |
+ "130429": "永年县", |
|
| 156 |
+ "130430": "邱县", |
|
| 157 |
+ "130431": "鸡泽县", |
|
| 158 |
+ "130432": "广平县", |
|
| 159 |
+ "130433": "馆陶县", |
|
| 160 |
+ "130434": "魏县", |
|
| 161 |
+ "130435": "曲周县", |
|
| 162 |
+ "130481": "武安市" |
|
| 163 |
+ }, |
|
| 164 |
+ "130500": {
|
|
| 165 |
+ "130502": "桥东区", |
|
| 166 |
+ "130503": "桥西区", |
|
| 167 |
+ "130521": "邢台县", |
|
| 168 |
+ "130522": "临城县", |
|
| 169 |
+ "130523": "内丘县", |
|
| 170 |
+ "130524": "柏乡县", |
|
| 171 |
+ "130525": "隆尧县", |
|
| 172 |
+ "130526": "任县", |
|
| 173 |
+ "130527": "南和县", |
|
| 174 |
+ "130528": "宁晋县", |
|
| 175 |
+ "130529": "巨鹿县", |
|
| 176 |
+ "130530": "新河县", |
|
| 177 |
+ "130531": "广宗县", |
|
| 178 |
+ "130532": "平乡县", |
|
| 179 |
+ "130533": "威县", |
|
| 180 |
+ "130534": "清河县", |
|
| 181 |
+ "130535": "临西县", |
|
| 182 |
+ "130581": "南宫市", |
|
| 183 |
+ "130582": "沙河市" |
|
| 184 |
+ }, |
|
| 185 |
+ "130600": {
|
|
| 186 |
+ "130602": "竞秀区", |
|
| 187 |
+ "130606": "莲池区", |
|
| 188 |
+ "130607": "满城区", |
|
| 189 |
+ "130608": "清苑区", |
|
| 190 |
+ "130609": "徐水区", |
|
| 191 |
+ "130623": "涞水县", |
|
| 192 |
+ "130624": "阜平县", |
|
| 193 |
+ "130626": "定兴县", |
|
| 194 |
+ "130627": "唐县", |
|
| 195 |
+ "130628": "高阳县", |
|
| 196 |
+ "130629": "容城县", |
|
| 197 |
+ "130630": "涞源县", |
|
| 198 |
+ "130631": "望都县", |
|
| 199 |
+ "130632": "安新县", |
|
| 200 |
+ "130633": "易县", |
|
| 201 |
+ "130634": "曲阳县", |
|
| 202 |
+ "130635": "蠡县", |
|
| 203 |
+ "130636": "顺平县", |
|
| 204 |
+ "130637": "博野县", |
|
| 205 |
+ "130638": "雄县", |
|
| 206 |
+ "130681": "涿州市", |
|
| 207 |
+ "130683": "安国市", |
|
| 208 |
+ "130684": "高碑店市" |
|
| 209 |
+ }, |
|
| 210 |
+ "130700": {
|
|
| 211 |
+ "130702": "桥东区", |
|
| 212 |
+ "130703": "桥西区", |
|
| 213 |
+ "130705": "宣化区", |
|
| 214 |
+ "130706": "下花园区", |
|
| 215 |
+ "130708": "万全区", |
|
| 216 |
+ "130709": "崇礼区", |
|
| 217 |
+ "130722": "张北县", |
|
| 218 |
+ "130723": "康保县", |
|
| 219 |
+ "130724": "沽源县", |
|
| 220 |
+ "130725": "尚义县", |
|
| 221 |
+ "130726": "蔚县", |
|
| 222 |
+ "130727": "阳原县", |
|
| 223 |
+ "130728": "怀安县", |
|
| 224 |
+ "130730": "怀来县", |
|
| 225 |
+ "130731": "涿鹿县", |
|
| 226 |
+ "130732": "赤城县" |
|
| 227 |
+ }, |
|
| 228 |
+ "130800": {
|
|
| 229 |
+ "130802": "双桥区", |
|
| 230 |
+ "130803": "双滦区", |
|
| 231 |
+ "130804": "鹰手营子矿区", |
|
| 232 |
+ "130821": "承德县", |
|
| 233 |
+ "130822": "兴隆县", |
|
| 234 |
+ "130823": "平泉县", |
|
| 235 |
+ "130824": "滦平县", |
|
| 236 |
+ "130825": "隆化县", |
|
| 237 |
+ "130826": "丰宁满族自治县", |
|
| 238 |
+ "130827": "宽城满族自治县", |
|
| 239 |
+ "130828": "围场满族蒙古族自治县" |
|
| 240 |
+ }, |
|
| 241 |
+ "130900": {
|
|
| 242 |
+ "130902": "新华区", |
|
| 243 |
+ "130903": "运河区", |
|
| 244 |
+ "130921": "沧县", |
|
| 245 |
+ "130922": "青县", |
|
| 246 |
+ "130923": "东光县", |
|
| 247 |
+ "130924": "海兴县", |
|
| 248 |
+ "130925": "盐山县", |
|
| 249 |
+ "130926": "肃宁县", |
|
| 250 |
+ "130927": "南皮县", |
|
| 251 |
+ "130928": "吴桥县", |
|
| 252 |
+ "130929": "献县", |
|
| 253 |
+ "130930": "孟村回族自治县", |
|
| 254 |
+ "130981": "泊头市", |
|
| 255 |
+ "130982": "任丘市", |
|
| 256 |
+ "130983": "黄骅市", |
|
| 257 |
+ "130984": "河间市" |
|
| 258 |
+ }, |
|
| 259 |
+ "131000": {
|
|
| 260 |
+ "131002": "安次区", |
|
| 261 |
+ "131003": "广阳区", |
|
| 262 |
+ "131022": "固安县", |
|
| 263 |
+ "131023": "永清县", |
|
| 264 |
+ "131024": "香河县", |
|
| 265 |
+ "131025": "大城县", |
|
| 266 |
+ "131026": "文安县", |
|
| 267 |
+ "131028": "大厂回族自治县", |
|
| 268 |
+ "131081": "霸州市", |
|
| 269 |
+ "131082": "三河市" |
|
| 270 |
+ }, |
|
| 271 |
+ "131100": {
|
|
| 272 |
+ "131102": "桃城区", |
|
| 273 |
+ "131103": "冀州区", |
|
| 274 |
+ "131121": "枣强县", |
|
| 275 |
+ "131122": "武邑县", |
|
| 276 |
+ "131123": "武强县", |
|
| 277 |
+ "131124": "饶阳县", |
|
| 278 |
+ "131125": "安平县", |
|
| 279 |
+ "131126": "故城县", |
|
| 280 |
+ "131127": "景县", |
|
| 281 |
+ "131128": "阜城县", |
|
| 282 |
+ "131182": "深州市" |
|
| 283 |
+ }, |
|
| 284 |
+ "140000": {
|
|
| 285 |
+ "140100": "太原市", |
|
| 286 |
+ "140200": "大同市", |
|
| 287 |
+ "140300": "阳泉市", |
|
| 288 |
+ "140400": "长治市", |
|
| 289 |
+ "140500": "晋城市", |
|
| 290 |
+ "140600": "朔州市", |
|
| 291 |
+ "140700": "晋中市", |
|
| 292 |
+ "140800": "运城市", |
|
| 293 |
+ "140900": "忻州市", |
|
| 294 |
+ "141000": "临汾市", |
|
| 295 |
+ "141100": "吕梁市" |
|
| 296 |
+ }, |
|
| 297 |
+ "140100": {
|
|
| 298 |
+ "140105": "小店区", |
|
| 299 |
+ "140106": "迎泽区", |
|
| 300 |
+ "140107": "杏花岭区", |
|
| 301 |
+ "140108": "尖草坪区", |
|
| 302 |
+ "140109": "万柏林区", |
|
| 303 |
+ "140110": "晋源区", |
|
| 304 |
+ "140121": "清徐县", |
|
| 305 |
+ "140122": "阳曲县", |
|
| 306 |
+ "140123": "娄烦县", |
|
| 307 |
+ "140181": "古交市" |
|
| 308 |
+ }, |
|
| 309 |
+ "140200": {
|
|
| 310 |
+ "140202": "城区", |
|
| 311 |
+ "140203": "矿区", |
|
| 312 |
+ "140211": "南郊区", |
|
| 313 |
+ "140212": "新荣区", |
|
| 314 |
+ "140221": "阳高县", |
|
| 315 |
+ "140222": "天镇县", |
|
| 316 |
+ "140223": "广灵县", |
|
| 317 |
+ "140224": "灵丘县", |
|
| 318 |
+ "140225": "浑源县", |
|
| 319 |
+ "140226": "左云县", |
|
| 320 |
+ "140227": "大同县" |
|
| 321 |
+ }, |
|
| 322 |
+ "140300": {
|
|
| 323 |
+ "140302": "城区", |
|
| 324 |
+ "140303": "矿区", |
|
| 325 |
+ "140311": "郊区", |
|
| 326 |
+ "140321": "平定县", |
|
| 327 |
+ "140322": "盂县" |
|
| 328 |
+ }, |
|
| 329 |
+ "140400": {
|
|
| 330 |
+ "140402": "城区", |
|
| 331 |
+ "140411": "郊区", |
|
| 332 |
+ "140421": "长治县", |
|
| 333 |
+ "140423": "襄垣县", |
|
| 334 |
+ "140424": "屯留县", |
|
| 335 |
+ "140425": "平顺县", |
|
| 336 |
+ "140426": "黎城县", |
|
| 337 |
+ "140427": "壶关县", |
|
| 338 |
+ "140428": "长子县", |
|
| 339 |
+ "140429": "武乡县", |
|
| 340 |
+ "140430": "沁县", |
|
| 341 |
+ "140431": "沁源县", |
|
| 342 |
+ "140481": "潞城市" |
|
| 343 |
+ }, |
|
| 344 |
+ "140500": {
|
|
| 345 |
+ "140502": "城区", |
|
| 346 |
+ "140521": "沁水县", |
|
| 347 |
+ "140522": "阳城县", |
|
| 348 |
+ "140524": "陵川县", |
|
| 349 |
+ "140525": "泽州县", |
|
| 350 |
+ "140581": "高平市" |
|
| 351 |
+ }, |
|
| 352 |
+ "140600": {
|
|
| 353 |
+ "140602": "朔城区", |
|
| 354 |
+ "140603": "平鲁区", |
|
| 355 |
+ "140621": "山阴县", |
|
| 356 |
+ "140622": "应县", |
|
| 357 |
+ "140623": "右玉县", |
|
| 358 |
+ "140624": "怀仁县" |
|
| 359 |
+ }, |
|
| 360 |
+ "140700": {
|
|
| 361 |
+ "140702": "榆次区", |
|
| 362 |
+ "140721": "榆社县", |
|
| 363 |
+ "140722": "左权县", |
|
| 364 |
+ "140723": "和顺县", |
|
| 365 |
+ "140724": "昔阳县", |
|
| 366 |
+ "140725": "寿阳县", |
|
| 367 |
+ "140726": "太谷县", |
|
| 368 |
+ "140727": "祁县", |
|
| 369 |
+ "140728": "平遥县", |
|
| 370 |
+ "140729": "灵石县", |
|
| 371 |
+ "140781": "介休市" |
|
| 372 |
+ }, |
|
| 373 |
+ "140800": {
|
|
| 374 |
+ "140802": "盐湖区", |
|
| 375 |
+ "140821": "临猗县", |
|
| 376 |
+ "140822": "万荣县", |
|
| 377 |
+ "140823": "闻喜县", |
|
| 378 |
+ "140824": "稷山县", |
|
| 379 |
+ "140825": "新绛县", |
|
| 380 |
+ "140826": "绛县", |
|
| 381 |
+ "140827": "垣曲县", |
|
| 382 |
+ "140828": "夏县", |
|
| 383 |
+ "140829": "平陆县", |
|
| 384 |
+ "140830": "芮城县", |
|
| 385 |
+ "140881": "永济市", |
|
| 386 |
+ "140882": "河津市" |
|
| 387 |
+ }, |
|
| 388 |
+ "140900": {
|
|
| 389 |
+ "140902": "忻府区", |
|
| 390 |
+ "140921": "定襄县", |
|
| 391 |
+ "140922": "五台县", |
|
| 392 |
+ "140923": "代县", |
|
| 393 |
+ "140924": "繁峙县", |
|
| 394 |
+ "140925": "宁武县", |
|
| 395 |
+ "140926": "静乐县", |
|
| 396 |
+ "140927": "神池县", |
|
| 397 |
+ "140928": "五寨县", |
|
| 398 |
+ "140929": "岢岚县", |
|
| 399 |
+ "140930": "河曲县", |
|
| 400 |
+ "140931": "保德县", |
|
| 401 |
+ "140932": "偏关县", |
|
| 402 |
+ "140981": "原平市" |
|
| 403 |
+ }, |
|
| 404 |
+ "141000": {
|
|
| 405 |
+ "141002": "尧都区", |
|
| 406 |
+ "141021": "曲沃县", |
|
| 407 |
+ "141022": "翼城县", |
|
| 408 |
+ "141023": "襄汾县", |
|
| 409 |
+ "141024": "洪洞县", |
|
| 410 |
+ "141025": "古县", |
|
| 411 |
+ "141026": "安泽县", |
|
| 412 |
+ "141027": "浮山县", |
|
| 413 |
+ "141028": "吉县", |
|
| 414 |
+ "141029": "乡宁县", |
|
| 415 |
+ "141030": "大宁县", |
|
| 416 |
+ "141031": "隰县", |
|
| 417 |
+ "141032": "永和县", |
|
| 418 |
+ "141033": "蒲县", |
|
| 419 |
+ "141034": "汾西县", |
|
| 420 |
+ "141081": "侯马市", |
|
| 421 |
+ "141082": "霍州市" |
|
| 422 |
+ }, |
|
| 423 |
+ "141100": {
|
|
| 424 |
+ "141102": "离石区", |
|
| 425 |
+ "141121": "文水县", |
|
| 426 |
+ "141122": "交城县", |
|
| 427 |
+ "141123": "兴县", |
|
| 428 |
+ "141124": "临县", |
|
| 429 |
+ "141125": "柳林县", |
|
| 430 |
+ "141126": "石楼县", |
|
| 431 |
+ "141127": "岚县", |
|
| 432 |
+ "141128": "方山县", |
|
| 433 |
+ "141129": "中阳县", |
|
| 434 |
+ "141130": "交口县", |
|
| 435 |
+ "141181": "孝义市", |
|
| 436 |
+ "141182": "汾阳市" |
|
| 437 |
+ }, |
|
| 438 |
+ "150000": {
|
|
| 439 |
+ "150100": "呼和浩特市", |
|
| 440 |
+ "150200": "包头市", |
|
| 441 |
+ "150300": "乌海市", |
|
| 442 |
+ "150400": "赤峰市", |
|
| 443 |
+ "150500": "通辽市", |
|
| 444 |
+ "150600": "鄂尔多斯市", |
|
| 445 |
+ "150700": "呼伦贝尔市", |
|
| 446 |
+ "150800": "巴彦淖尔市", |
|
| 447 |
+ "150900": "乌兰察布市", |
|
| 448 |
+ "152200": "兴安盟", |
|
| 449 |
+ "152500": "锡林郭勒盟", |
|
| 450 |
+ "152900": "阿拉善盟" |
|
| 451 |
+ }, |
|
| 452 |
+ "150100": {
|
|
| 453 |
+ "150102": "新城区", |
|
| 454 |
+ "150103": "回民区", |
|
| 455 |
+ "150104": "玉泉区", |
|
| 456 |
+ "150105": "赛罕区", |
|
| 457 |
+ "150121": "土默特左旗", |
|
| 458 |
+ "150122": "托克托县", |
|
| 459 |
+ "150123": "和林格尔县", |
|
| 460 |
+ "150124": "清水河县", |
|
| 461 |
+ "150125": "武川县" |
|
| 462 |
+ }, |
|
| 463 |
+ "150200": {
|
|
| 464 |
+ "150202": "东河区", |
|
| 465 |
+ "150203": "昆都仑区", |
|
| 466 |
+ "150204": "青山区", |
|
| 467 |
+ "150205": "石拐区", |
|
| 468 |
+ "150206": "白云鄂博矿区", |
|
| 469 |
+ "150207": "九原区", |
|
| 470 |
+ "150221": "土默特右旗", |
|
| 471 |
+ "150222": "固阳县", |
|
| 472 |
+ "150223": "达尔罕茂明安联合旗" |
|
| 473 |
+ }, |
|
| 474 |
+ "150300": {
|
|
| 475 |
+ "150302": "海勃湾区", |
|
| 476 |
+ "150303": "海南区", |
|
| 477 |
+ "150304": "乌达区" |
|
| 478 |
+ }, |
|
| 479 |
+ "150400": {
|
|
| 480 |
+ "150402": "红山区", |
|
| 481 |
+ "150403": "元宝山区", |
|
| 482 |
+ "150404": "松山区", |
|
| 483 |
+ "150421": "阿鲁科尔沁旗", |
|
| 484 |
+ "150422": "巴林左旗", |
|
| 485 |
+ "150423": "巴林右旗", |
|
| 486 |
+ "150424": "林西县", |
|
| 487 |
+ "150425": "克什克腾旗", |
|
| 488 |
+ "150426": "翁牛特旗", |
|
| 489 |
+ "150428": "喀喇沁旗", |
|
| 490 |
+ "150429": "宁城县", |
|
| 491 |
+ "150430": "敖汉旗" |
|
| 492 |
+ }, |
|
| 493 |
+ "150500": {
|
|
| 494 |
+ "150502": "科尔沁区", |
|
| 495 |
+ "150521": "科尔沁左翼中旗", |
|
| 496 |
+ "150522": "科尔沁左翼后旗", |
|
| 497 |
+ "150523": "开鲁县", |
|
| 498 |
+ "150524": "库伦旗", |
|
| 499 |
+ "150525": "奈曼旗", |
|
| 500 |
+ "150526": "扎鲁特旗", |
|
| 501 |
+ "150581": "霍林郭勒市" |
|
| 502 |
+ }, |
|
| 503 |
+ "150600": {
|
|
| 504 |
+ "150602": "东胜区", |
|
| 505 |
+ "150603": "康巴什区", |
|
| 506 |
+ "150621": "达拉特旗", |
|
| 507 |
+ "150622": "准格尔旗", |
|
| 508 |
+ "150623": "鄂托克前旗", |
|
| 509 |
+ "150624": "鄂托克旗", |
|
| 510 |
+ "150625": "杭锦旗", |
|
| 511 |
+ "150626": "乌审旗", |
|
| 512 |
+ "150627": "伊金霍洛旗" |
|
| 513 |
+ }, |
|
| 514 |
+ "150700": {
|
|
| 515 |
+ "150702": "海拉尔区", |
|
| 516 |
+ "150703": "扎赉诺尔区", |
|
| 517 |
+ "150721": "阿荣旗", |
|
| 518 |
+ "150722": "莫力达瓦达斡尔族自治旗", |
|
| 519 |
+ "150723": "鄂伦春自治旗", |
|
| 520 |
+ "150724": "鄂温克族自治旗", |
|
| 521 |
+ "150725": "陈巴尔虎旗", |
|
| 522 |
+ "150726": "新巴尔虎左旗", |
|
| 523 |
+ "150727": "新巴尔虎右旗", |
|
| 524 |
+ "150781": "满洲里市", |
|
| 525 |
+ "150782": "牙克石市", |
|
| 526 |
+ "150783": "扎兰屯市", |
|
| 527 |
+ "150784": "额尔古纳市", |
|
| 528 |
+ "150785": "根河市" |
|
| 529 |
+ }, |
|
| 530 |
+ "150800": {
|
|
| 531 |
+ "150802": "临河区", |
|
| 532 |
+ "150821": "五原县", |
|
| 533 |
+ "150822": "磴口县", |
|
| 534 |
+ "150823": "乌拉特前旗", |
|
| 535 |
+ "150824": "乌拉特中旗", |
|
| 536 |
+ "150825": "乌拉特后旗", |
|
| 537 |
+ "150826": "杭锦后旗" |
|
| 538 |
+ }, |
|
| 539 |
+ "150900": {
|
|
| 540 |
+ "150902": "集宁区", |
|
| 541 |
+ "150921": "卓资县", |
|
| 542 |
+ "150922": "化德县", |
|
| 543 |
+ "150923": "商都县", |
|
| 544 |
+ "150924": "兴和县", |
|
| 545 |
+ "150925": "凉城县", |
|
| 546 |
+ "150926": "察哈尔右翼前旗", |
|
| 547 |
+ "150927": "察哈尔右翼中旗", |
|
| 548 |
+ "150928": "察哈尔右翼后旗", |
|
| 549 |
+ "150929": "四子王旗", |
|
| 550 |
+ "150981": "丰镇市" |
|
| 551 |
+ }, |
|
| 552 |
+ "152200": {
|
|
| 553 |
+ "152201": "乌兰浩特市", |
|
| 554 |
+ "152202": "阿尔山市", |
|
| 555 |
+ "152221": "科尔沁右翼前旗", |
|
| 556 |
+ "152222": "科尔沁右翼中旗", |
|
| 557 |
+ "152223": "扎赉特旗", |
|
| 558 |
+ "152224": "突泉县" |
|
| 559 |
+ }, |
|
| 560 |
+ "152500": {
|
|
| 561 |
+ "152501": "二连浩特市", |
|
| 562 |
+ "152502": "锡林浩特市", |
|
| 563 |
+ "152522": "阿巴嘎旗", |
|
| 564 |
+ "152523": "苏尼特左旗", |
|
| 565 |
+ "152524": "苏尼特右旗", |
|
| 566 |
+ "152525": "东乌珠穆沁旗", |
|
| 567 |
+ "152526": "西乌珠穆沁旗", |
|
| 568 |
+ "152527": "太仆寺旗", |
|
| 569 |
+ "152528": "镶黄旗", |
|
| 570 |
+ "152529": "正镶白旗", |
|
| 571 |
+ "152530": "正蓝旗", |
|
| 572 |
+ "152531": "多伦县" |
|
| 573 |
+ }, |
|
| 574 |
+ "152900": {
|
|
| 575 |
+ "152921": "阿拉善左旗", |
|
| 576 |
+ "152922": "阿拉善右旗", |
|
| 577 |
+ "152923": "额济纳旗" |
|
| 578 |
+ }, |
|
| 579 |
+ "210000": {
|
|
| 580 |
+ "210100": "沈阳市", |
|
| 581 |
+ "210200": "大连市", |
|
| 582 |
+ "210300": "鞍山市", |
|
| 583 |
+ "210400": "抚顺市", |
|
| 584 |
+ "210500": "本溪市", |
|
| 585 |
+ "210600": "丹东市", |
|
| 586 |
+ "210700": "锦州市", |
|
| 587 |
+ "210800": "营口市", |
|
| 588 |
+ "210900": "阜新市", |
|
| 589 |
+ "211000": "辽阳市", |
|
| 590 |
+ "211100": "盘锦市", |
|
| 591 |
+ "211200": "铁岭市", |
|
| 592 |
+ "211300": "朝阳市", |
|
| 593 |
+ "211400": "葫芦岛市" |
|
| 594 |
+ }, |
|
| 595 |
+ "210100": {
|
|
| 596 |
+ "210102": "和平区", |
|
| 597 |
+ "210103": "沈河区", |
|
| 598 |
+ "210104": "大东区", |
|
| 599 |
+ "210105": "皇姑区", |
|
| 600 |
+ "210106": "铁西区", |
|
| 601 |
+ "210111": "苏家屯区", |
|
| 602 |
+ "210112": "浑南区", |
|
| 603 |
+ "210113": "沈北新区", |
|
| 604 |
+ "210114": "于洪区", |
|
| 605 |
+ "210115": "辽中区", |
|
| 606 |
+ "210123": "康平县", |
|
| 607 |
+ "210124": "法库县", |
|
| 608 |
+ "210181": "新民市" |
|
| 609 |
+ }, |
|
| 610 |
+ "210200": {
|
|
| 611 |
+ "210202": "中山区", |
|
| 612 |
+ "210203": "西岗区", |
|
| 613 |
+ "210204": "沙河口区", |
|
| 614 |
+ "210211": "甘井子区", |
|
| 615 |
+ "210212": "旅顺口区", |
|
| 616 |
+ "210213": "金州区", |
|
| 617 |
+ "210214": "普兰店区", |
|
| 618 |
+ "210224": "长海县", |
|
| 619 |
+ "210281": "瓦房店市", |
|
| 620 |
+ "210283": "庄河市" |
|
| 621 |
+ }, |
|
| 622 |
+ "210300": {
|
|
| 623 |
+ "210302": "铁东区", |
|
| 624 |
+ "210303": "铁西区", |
|
| 625 |
+ "210304": "立山区", |
|
| 626 |
+ "210311": "千山区", |
|
| 627 |
+ "210321": "台安县", |
|
| 628 |
+ "210323": "岫岩满族自治县", |
|
| 629 |
+ "210381": "海城市" |
|
| 630 |
+ }, |
|
| 631 |
+ "210400": {
|
|
| 632 |
+ "210402": "新抚区", |
|
| 633 |
+ "210403": "东洲区", |
|
| 634 |
+ "210404": "望花区", |
|
| 635 |
+ "210411": "顺城区", |
|
| 636 |
+ "210421": "抚顺县", |
|
| 637 |
+ "210422": "新宾满族自治县", |
|
| 638 |
+ "210423": "清原满族自治县" |
|
| 639 |
+ }, |
|
| 640 |
+ "210500": {
|
|
| 641 |
+ "210502": "平山区", |
|
| 642 |
+ "210503": "溪湖区", |
|
| 643 |
+ "210504": "明山区", |
|
| 644 |
+ "210505": "南芬区", |
|
| 645 |
+ "210521": "本溪满族自治县", |
|
| 646 |
+ "210522": "桓仁满族自治县" |
|
| 647 |
+ }, |
|
| 648 |
+ "210600": {
|
|
| 649 |
+ "210602": "元宝区", |
|
| 650 |
+ "210603": "振兴区", |
|
| 651 |
+ "210604": "振安区", |
|
| 652 |
+ "210624": "宽甸满族自治县", |
|
| 653 |
+ "210681": "东港市", |
|
| 654 |
+ "210682": "凤城市" |
|
| 655 |
+ }, |
|
| 656 |
+ "210700": {
|
|
| 657 |
+ "210702": "古塔区", |
|
| 658 |
+ "210703": "凌河区", |
|
| 659 |
+ "210711": "太和区", |
|
| 660 |
+ "210726": "黑山县", |
|
| 661 |
+ "210727": "义县", |
|
| 662 |
+ "210781": "凌海市", |
|
| 663 |
+ "210782": "北镇市" |
|
| 664 |
+ }, |
|
| 665 |
+ "210800": {
|
|
| 666 |
+ "210802": "站前区", |
|
| 667 |
+ "210803": "西市区", |
|
| 668 |
+ "210804": "鲅鱼圈区", |
|
| 669 |
+ "210811": "老边区", |
|
| 670 |
+ "210881": "盖州市", |
|
| 671 |
+ "210882": "大石桥市" |
|
| 672 |
+ }, |
|
| 673 |
+ "210900": {
|
|
| 674 |
+ "210902": "海州区", |
|
| 675 |
+ "210903": "新邱区", |
|
| 676 |
+ "210904": "太平区", |
|
| 677 |
+ "210905": "清河门区", |
|
| 678 |
+ "210911": "细河区", |
|
| 679 |
+ "210921": "阜新蒙古族自治县", |
|
| 680 |
+ "210922": "彰武县" |
|
| 681 |
+ }, |
|
| 682 |
+ "211000": {
|
|
| 683 |
+ "211002": "白塔区", |
|
| 684 |
+ "211003": "文圣区", |
|
| 685 |
+ "211004": "宏伟区", |
|
| 686 |
+ "211005": "弓长岭区", |
|
| 687 |
+ "211011": "太子河区", |
|
| 688 |
+ "211021": "辽阳县", |
|
| 689 |
+ "211081": "灯塔市" |
|
| 690 |
+ }, |
|
| 691 |
+ "211100": {
|
|
| 692 |
+ "211102": "双台子区", |
|
| 693 |
+ "211103": "兴隆台区", |
|
| 694 |
+ "211104": "大洼区", |
|
| 695 |
+ "211122": "盘山县" |
|
| 696 |
+ }, |
|
| 697 |
+ "211200": {
|
|
| 698 |
+ "211202": "银州区", |
|
| 699 |
+ "211204": "清河区", |
|
| 700 |
+ "211221": "铁岭县", |
|
| 701 |
+ "211223": "西丰县", |
|
| 702 |
+ "211224": "昌图县", |
|
| 703 |
+ "211281": "调兵山市", |
|
| 704 |
+ "211282": "开原市" |
|
| 705 |
+ }, |
|
| 706 |
+ "211300": {
|
|
| 707 |
+ "211302": "双塔区", |
|
| 708 |
+ "211303": "龙城区", |
|
| 709 |
+ "211321": "朝阳县", |
|
| 710 |
+ "211322": "建平县", |
|
| 711 |
+ "211324": "喀喇沁左翼蒙古族自治县", |
|
| 712 |
+ "211381": "北票市", |
|
| 713 |
+ "211382": "凌源市" |
|
| 714 |
+ }, |
|
| 715 |
+ "211400": {
|
|
| 716 |
+ "211402": "连山区", |
|
| 717 |
+ "211403": "龙港区", |
|
| 718 |
+ "211404": "南票区", |
|
| 719 |
+ "211421": "绥中县", |
|
| 720 |
+ "211422": "建昌县", |
|
| 721 |
+ "211481": "兴城市" |
|
| 722 |
+ }, |
|
| 723 |
+ "220000": {
|
|
| 724 |
+ "220100": "长春市", |
|
| 725 |
+ "220200": "吉林市", |
|
| 726 |
+ "220300": "四平市", |
|
| 727 |
+ "220400": "辽源市", |
|
| 728 |
+ "220500": "通化市", |
|
| 729 |
+ "220600": "白山市", |
|
| 730 |
+ "220700": "松原市", |
|
| 731 |
+ "220800": "白城市", |
|
| 732 |
+ "222400": "延边朝鲜族自治州" |
|
| 733 |
+ }, |
|
| 734 |
+ "220100": {
|
|
| 735 |
+ "220102": "南关区", |
|
| 736 |
+ "220103": "宽城区", |
|
| 737 |
+ "220104": "朝阳区", |
|
| 738 |
+ "220105": "二道区", |
|
| 739 |
+ "220106": "绿园区", |
|
| 740 |
+ "220112": "双阳区", |
|
| 741 |
+ "220113": "九台区", |
|
| 742 |
+ "220122": "农安县", |
|
| 743 |
+ "220182": "榆树市", |
|
| 744 |
+ "220183": "德惠市" |
|
| 745 |
+ }, |
|
| 746 |
+ "220200": {
|
|
| 747 |
+ "220202": "昌邑区", |
|
| 748 |
+ "220203": "龙潭区", |
|
| 749 |
+ "220204": "船营区", |
|
| 750 |
+ "220211": "丰满区", |
|
| 751 |
+ "220221": "永吉县", |
|
| 752 |
+ "220281": "蛟河市", |
|
| 753 |
+ "220282": "桦甸市", |
|
| 754 |
+ "220283": "舒兰市", |
|
| 755 |
+ "220284": "磐石市" |
|
| 756 |
+ }, |
|
| 757 |
+ "220300": {
|
|
| 758 |
+ "220302": "铁西区", |
|
| 759 |
+ "220303": "铁东区", |
|
| 760 |
+ "220322": "梨树县", |
|
| 761 |
+ "220323": "伊通满族自治县", |
|
| 762 |
+ "220381": "公主岭市", |
|
| 763 |
+ "220382": "双辽市" |
|
| 764 |
+ }, |
|
| 765 |
+ "220400": {
|
|
| 766 |
+ "220402": "龙山区", |
|
| 767 |
+ "220403": "西安区", |
|
| 768 |
+ "220421": "东丰县", |
|
| 769 |
+ "220422": "东辽县" |
|
| 770 |
+ }, |
|
| 771 |
+ "220500": {
|
|
| 772 |
+ "220502": "东昌区", |
|
| 773 |
+ "220503": "二道江区", |
|
| 774 |
+ "220521": "通化县", |
|
| 775 |
+ "220523": "辉南县", |
|
| 776 |
+ "220524": "柳河县", |
|
| 777 |
+ "220581": "梅河口市", |
|
| 778 |
+ "220582": "集安市" |
|
| 779 |
+ }, |
|
| 780 |
+ "220600": {
|
|
| 781 |
+ "220602": "浑江区", |
|
| 782 |
+ "220605": "江源区", |
|
| 783 |
+ "220621": "抚松县", |
|
| 784 |
+ "220622": "靖宇县", |
|
| 785 |
+ "220623": "长白朝鲜族自治县", |
|
| 786 |
+ "220681": "临江市" |
|
| 787 |
+ }, |
|
| 788 |
+ "220700": {
|
|
| 789 |
+ "220702": "宁江区", |
|
| 790 |
+ "220721": "前郭尔罗斯蒙古族自治县", |
|
| 791 |
+ "220722": "长岭县", |
|
| 792 |
+ "220723": "乾安县", |
|
| 793 |
+ "220781": "扶余市" |
|
| 794 |
+ }, |
|
| 795 |
+ "220800": {
|
|
| 796 |
+ "220802": "洮北区", |
|
| 797 |
+ "220821": "镇赉县", |
|
| 798 |
+ "220822": "通榆县", |
|
| 799 |
+ "220881": "洮南市", |
|
| 800 |
+ "220882": "大安市" |
|
| 801 |
+ }, |
|
| 802 |
+ "222400": {
|
|
| 803 |
+ "222401": "延吉市", |
|
| 804 |
+ "222402": "图们市", |
|
| 805 |
+ "222403": "敦化市", |
|
| 806 |
+ "222404": "珲春市", |
|
| 807 |
+ "222405": "龙井市", |
|
| 808 |
+ "222406": "和龙市", |
|
| 809 |
+ "222424": "汪清县", |
|
| 810 |
+ "222426": "安图县" |
|
| 811 |
+ }, |
|
| 812 |
+ "230000": {
|
|
| 813 |
+ "230100": "哈尔滨市", |
|
| 814 |
+ "230200": "齐齐哈尔市", |
|
| 815 |
+ "230300": "鸡西市", |
|
| 816 |
+ "230400": "鹤岗市", |
|
| 817 |
+ "230500": "双鸭山市", |
|
| 818 |
+ "230600": "大庆市", |
|
| 819 |
+ "230700": "伊春市", |
|
| 820 |
+ "230800": "佳木斯市", |
|
| 821 |
+ "230900": "七台河市", |
|
| 822 |
+ "231000": "牡丹江市", |
|
| 823 |
+ "231100": "黑河市", |
|
| 824 |
+ "231200": "绥化市", |
|
| 825 |
+ "232700": "大兴安岭地区" |
|
| 826 |
+ }, |
|
| 827 |
+ "230100": {
|
|
| 828 |
+ "230102": "道里区", |
|
| 829 |
+ "230103": "南岗区", |
|
| 830 |
+ "230104": "道外区", |
|
| 831 |
+ "230108": "平房区", |
|
| 832 |
+ "230109": "松北区", |
|
| 833 |
+ "230110": "香坊区", |
|
| 834 |
+ "230111": "呼兰区", |
|
| 835 |
+ "230112": "阿城区", |
|
| 836 |
+ "230113": "双城区", |
|
| 837 |
+ "230123": "依兰县", |
|
| 838 |
+ "230124": "方正县", |
|
| 839 |
+ "230125": "宾县", |
|
| 840 |
+ "230126": "巴彦县", |
|
| 841 |
+ "230127": "木兰县", |
|
| 842 |
+ "230128": "通河县", |
|
| 843 |
+ "230129": "延寿县", |
|
| 844 |
+ "230183": "尚志市", |
|
| 845 |
+ "230184": "五常市" |
|
| 846 |
+ }, |
|
| 847 |
+ "230200": {
|
|
| 848 |
+ "230202": "龙沙区", |
|
| 849 |
+ "230203": "建华区", |
|
| 850 |
+ "230204": "铁锋区", |
|
| 851 |
+ "230205": "昂昂溪区", |
|
| 852 |
+ "230206": "富拉尔基区", |
|
| 853 |
+ "230207": "碾子山区", |
|
| 854 |
+ "230208": "梅里斯达斡尔族区", |
|
| 855 |
+ "230221": "龙江县", |
|
| 856 |
+ "230223": "依安县", |
|
| 857 |
+ "230224": "泰来县", |
|
| 858 |
+ "230225": "甘南县", |
|
| 859 |
+ "230227": "富裕县", |
|
| 860 |
+ "230229": "克山县", |
|
| 861 |
+ "230230": "克东县", |
|
| 862 |
+ "230231": "拜泉县", |
|
| 863 |
+ "230281": "讷河市" |
|
| 864 |
+ }, |
|
| 865 |
+ "230300": {
|
|
| 866 |
+ "230302": "鸡冠区", |
|
| 867 |
+ "230303": "恒山区", |
|
| 868 |
+ "230304": "滴道区", |
|
| 869 |
+ "230305": "梨树区", |
|
| 870 |
+ "230306": "城子河区", |
|
| 871 |
+ "230307": "麻山区", |
|
| 872 |
+ "230321": "鸡东县", |
|
| 873 |
+ "230381": "虎林市", |
|
| 874 |
+ "230382": "密山市" |
|
| 875 |
+ }, |
|
| 876 |
+ "230400": {
|
|
| 877 |
+ "230402": "向阳区", |
|
| 878 |
+ "230403": "工农区", |
|
| 879 |
+ "230404": "南山区", |
|
| 880 |
+ "230405": "兴安区", |
|
| 881 |
+ "230406": "东山区", |
|
| 882 |
+ "230407": "兴山区", |
|
| 883 |
+ "230421": "萝北县", |
|
| 884 |
+ "230422": "绥滨县" |
|
| 885 |
+ }, |
|
| 886 |
+ "230500": {
|
|
| 887 |
+ "230502": "尖山区", |
|
| 888 |
+ "230503": "岭东区", |
|
| 889 |
+ "230505": "四方台区", |
|
| 890 |
+ "230506": "宝山区", |
|
| 891 |
+ "230521": "集贤县", |
|
| 892 |
+ "230522": "友谊县", |
|
| 893 |
+ "230523": "宝清县", |
|
| 894 |
+ "230524": "饶河县" |
|
| 895 |
+ }, |
|
| 896 |
+ "230600": {
|
|
| 897 |
+ "230602": "萨尔图区", |
|
| 898 |
+ "230603": "龙凤区", |
|
| 899 |
+ "230604": "让胡路区", |
|
| 900 |
+ "230605": "红岗区", |
|
| 901 |
+ "230606": "大同区", |
|
| 902 |
+ "230621": "肇州县", |
|
| 903 |
+ "230622": "肇源县", |
|
| 904 |
+ "230623": "林甸县", |
|
| 905 |
+ "230624": "杜尔伯特蒙古族自治县" |
|
| 906 |
+ }, |
|
| 907 |
+ "230700": {
|
|
| 908 |
+ "230702": "伊春区", |
|
| 909 |
+ "230703": "南岔区", |
|
| 910 |
+ "230704": "友好区", |
|
| 911 |
+ "230705": "西林区", |
|
| 912 |
+ "230706": "翠峦区", |
|
| 913 |
+ "230707": "新青区", |
|
| 914 |
+ "230708": "美溪区", |
|
| 915 |
+ "230709": "金山屯区", |
|
| 916 |
+ "230710": "五营区", |
|
| 917 |
+ "230711": "乌马河区", |
|
| 918 |
+ "230712": "汤旺河区", |
|
| 919 |
+ "230713": "带岭区", |
|
| 920 |
+ "230714": "乌伊岭区", |
|
| 921 |
+ "230715": "红星区", |
|
| 922 |
+ "230716": "上甘岭区", |
|
| 923 |
+ "230722": "嘉荫县", |
|
| 924 |
+ "230781": "铁力市" |
|
| 925 |
+ }, |
|
| 926 |
+ "230800": {
|
|
| 927 |
+ "230803": "向阳区", |
|
| 928 |
+ "230804": "前进区", |
|
| 929 |
+ "230805": "东风区", |
|
| 930 |
+ "230811": "郊区", |
|
| 931 |
+ "230822": "桦南县", |
|
| 932 |
+ "230826": "桦川县", |
|
| 933 |
+ "230828": "汤原县", |
|
| 934 |
+ "230881": "同江市", |
|
| 935 |
+ "230882": "富锦市", |
|
| 936 |
+ "230883": "抚远市" |
|
| 937 |
+ }, |
|
| 938 |
+ "230900": {
|
|
| 939 |
+ "230902": "新兴区", |
|
| 940 |
+ "230903": "桃山区", |
|
| 941 |
+ "230904": "茄子河区", |
|
| 942 |
+ "230921": "勃利县" |
|
| 943 |
+ }, |
|
| 944 |
+ "231000": {
|
|
| 945 |
+ "231002": "东安区", |
|
| 946 |
+ "231003": "阳明区", |
|
| 947 |
+ "231004": "爱民区", |
|
| 948 |
+ "231005": "西安区", |
|
| 949 |
+ "231025": "林口县", |
|
| 950 |
+ "231081": "绥芬河市", |
|
| 951 |
+ "231083": "海林市", |
|
| 952 |
+ "231084": "宁安市", |
|
| 953 |
+ "231085": "穆棱市", |
|
| 954 |
+ "231086": "东宁市" |
|
| 955 |
+ }, |
|
| 956 |
+ "231100": {
|
|
| 957 |
+ "231102": "爱辉区", |
|
| 958 |
+ "231121": "嫩江县", |
|
| 959 |
+ "231123": "逊克县", |
|
| 960 |
+ "231124": "孙吴县", |
|
| 961 |
+ "231181": "北安市", |
|
| 962 |
+ "231182": "五大连池市" |
|
| 963 |
+ }, |
|
| 964 |
+ "231200": {
|
|
| 965 |
+ "231202": "北林区", |
|
| 966 |
+ "231221": "望奎县", |
|
| 967 |
+ "231222": "兰西县", |
|
| 968 |
+ "231223": "青冈县", |
|
| 969 |
+ "231224": "庆安县", |
|
| 970 |
+ "231225": "明水县", |
|
| 971 |
+ "231226": "绥棱县", |
|
| 972 |
+ "231281": "安达市", |
|
| 973 |
+ "231282": "肇东市", |
|
| 974 |
+ "231283": "海伦市" |
|
| 975 |
+ }, |
|
| 976 |
+ "232700": {
|
|
| 977 |
+ "232721": "呼玛县", |
|
| 978 |
+ "232722": "塔河县", |
|
| 979 |
+ "232723": "漠河县" |
|
| 980 |
+ }, |
|
| 981 |
+ "310000": {
|
|
| 982 |
+ "310100": "市辖区" |
|
| 983 |
+ }, |
|
| 984 |
+ "310100": {
|
|
| 985 |
+ "310101": "黄浦区", |
|
| 986 |
+ "310104": "徐汇区", |
|
| 987 |
+ "310105": "长宁区", |
|
| 988 |
+ "310106": "静安区", |
|
| 989 |
+ "310107": "普陀区", |
|
| 990 |
+ "310109": "虹口区", |
|
| 991 |
+ "310110": "杨浦区", |
|
| 992 |
+ "310112": "闵行区", |
|
| 993 |
+ "310113": "宝山区", |
|
| 994 |
+ "310114": "嘉定区", |
|
| 995 |
+ "310115": "浦东新区", |
|
| 996 |
+ "310116": "金山区", |
|
| 997 |
+ "310117": "松江区", |
|
| 998 |
+ "310118": "青浦区", |
|
| 999 |
+ "310120": "奉贤区", |
|
| 1000 |
+ "310151": "崇明区" |
|
| 1001 |
+ }, |
|
| 1002 |
+ "320000": {
|
|
| 1003 |
+ "320100": "南京市", |
|
| 1004 |
+ "320200": "无锡市", |
|
| 1005 |
+ "320300": "徐州市", |
|
| 1006 |
+ "320400": "常州市", |
|
| 1007 |
+ "320500": "苏州市", |
|
| 1008 |
+ "320600": "南通市", |
|
| 1009 |
+ "320700": "连云港市", |
|
| 1010 |
+ "320800": "淮安市", |
|
| 1011 |
+ "320900": "盐城市", |
|
| 1012 |
+ "321000": "扬州市", |
|
| 1013 |
+ "321100": "镇江市", |
|
| 1014 |
+ "321200": "泰州市", |
|
| 1015 |
+ "321300": "宿迁市" |
|
| 1016 |
+ }, |
|
| 1017 |
+ "320100": {
|
|
| 1018 |
+ "320102": "玄武区", |
|
| 1019 |
+ "320104": "秦淮区", |
|
| 1020 |
+ "320105": "建邺区", |
|
| 1021 |
+ "320106": "鼓楼区", |
|
| 1022 |
+ "320111": "浦口区", |
|
| 1023 |
+ "320113": "栖霞区", |
|
| 1024 |
+ "320114": "雨花台区", |
|
| 1025 |
+ "320115": "江宁区", |
|
| 1026 |
+ "320116": "六合区", |
|
| 1027 |
+ "320117": "溧水区", |
|
| 1028 |
+ "320118": "高淳区" |
|
| 1029 |
+ }, |
|
| 1030 |
+ "320200": {
|
|
| 1031 |
+ "320205": "锡山区", |
|
| 1032 |
+ "320206": "惠山区", |
|
| 1033 |
+ "320211": "滨湖区", |
|
| 1034 |
+ "320213": "梁溪区", |
|
| 1035 |
+ "320214": "新吴区", |
|
| 1036 |
+ "320281": "江阴市", |
|
| 1037 |
+ "320282": "宜兴市" |
|
| 1038 |
+ }, |
|
| 1039 |
+ "320300": {
|
|
| 1040 |
+ "320302": "鼓楼区", |
|
| 1041 |
+ "320303": "云龙区", |
|
| 1042 |
+ "320305": "贾汪区", |
|
| 1043 |
+ "320311": "泉山区", |
|
| 1044 |
+ "320312": "铜山区", |
|
| 1045 |
+ "320321": "丰县", |
|
| 1046 |
+ "320322": "沛县", |
|
| 1047 |
+ "320324": "睢宁县", |
|
| 1048 |
+ "320381": "新沂市", |
|
| 1049 |
+ "320382": "邳州市" |
|
| 1050 |
+ }, |
|
| 1051 |
+ "320400": {
|
|
| 1052 |
+ "320402": "天宁区", |
|
| 1053 |
+ "320404": "钟楼区", |
|
| 1054 |
+ "320411": "新北区", |
|
| 1055 |
+ "320412": "武进区", |
|
| 1056 |
+ "320413": "金坛区", |
|
| 1057 |
+ "320481": "溧阳市" |
|
| 1058 |
+ }, |
|
| 1059 |
+ "320500": {
|
|
| 1060 |
+ "320505": "虎丘区", |
|
| 1061 |
+ "320506": "吴中区", |
|
| 1062 |
+ "320507": "相城区", |
|
| 1063 |
+ "320508": "姑苏区", |
|
| 1064 |
+ "320509": "吴江区", |
|
| 1065 |
+ "320581": "常熟市", |
|
| 1066 |
+ "320582": "张家港市", |
|
| 1067 |
+ "320583": "昆山市", |
|
| 1068 |
+ "320585": "太仓市" |
|
| 1069 |
+ }, |
|
| 1070 |
+ "320600": {
|
|
| 1071 |
+ "320602": "崇川区", |
|
| 1072 |
+ "320611": "港闸区", |
|
| 1073 |
+ "320612": "通州区", |
|
| 1074 |
+ "320621": "海安县", |
|
| 1075 |
+ "320623": "如东县", |
|
| 1076 |
+ "320681": "启东市", |
|
| 1077 |
+ "320682": "如皋市", |
|
| 1078 |
+ "320684": "海门市" |
|
| 1079 |
+ }, |
|
| 1080 |
+ "320700": {
|
|
| 1081 |
+ "320703": "连云区", |
|
| 1082 |
+ "320706": "海州区", |
|
| 1083 |
+ "320707": "赣榆区", |
|
| 1084 |
+ "320722": "东海县", |
|
| 1085 |
+ "320723": "灌云县", |
|
| 1086 |
+ "320724": "灌南县" |
|
| 1087 |
+ }, |
|
| 1088 |
+ "320800": {
|
|
| 1089 |
+ "320803": "淮安区", |
|
| 1090 |
+ "320804": "淮阴区", |
|
| 1091 |
+ "320812": "清江浦区", |
|
| 1092 |
+ "320813": "洪泽区", |
|
| 1093 |
+ "320826": "涟水县", |
|
| 1094 |
+ "320830": "盱眙县", |
|
| 1095 |
+ "320831": "金湖县" |
|
| 1096 |
+ }, |
|
| 1097 |
+ "320900": {
|
|
| 1098 |
+ "320902": "亭湖区", |
|
| 1099 |
+ "320903": "盐都区", |
|
| 1100 |
+ "320904": "大丰区", |
|
| 1101 |
+ "320921": "响水县", |
|
| 1102 |
+ "320922": "滨海县", |
|
| 1103 |
+ "320923": "阜宁县", |
|
| 1104 |
+ "320924": "射阳县", |
|
| 1105 |
+ "320925": "建湖县", |
|
| 1106 |
+ "320981": "东台市" |
|
| 1107 |
+ }, |
|
| 1108 |
+ "321000": {
|
|
| 1109 |
+ "321002": "广陵区", |
|
| 1110 |
+ "321003": "邗江区", |
|
| 1111 |
+ "321012": "江都区", |
|
| 1112 |
+ "321023": "宝应县", |
|
| 1113 |
+ "321081": "仪征市", |
|
| 1114 |
+ "321084": "高邮市" |
|
| 1115 |
+ }, |
|
| 1116 |
+ "321100": {
|
|
| 1117 |
+ "321102": "京口区", |
|
| 1118 |
+ "321111": "润州区", |
|
| 1119 |
+ "321112": "丹徒区", |
|
| 1120 |
+ "321181": "丹阳市", |
|
| 1121 |
+ "321182": "扬中市", |
|
| 1122 |
+ "321183": "句容市" |
|
| 1123 |
+ }, |
|
| 1124 |
+ "321200": {
|
|
| 1125 |
+ "321202": "海陵区", |
|
| 1126 |
+ "321203": "高港区", |
|
| 1127 |
+ "321204": "姜堰区", |
|
| 1128 |
+ "321281": "兴化市", |
|
| 1129 |
+ "321282": "靖江市", |
|
| 1130 |
+ "321283": "泰兴市" |
|
| 1131 |
+ }, |
|
| 1132 |
+ "321300": {
|
|
| 1133 |
+ "321302": "宿城区", |
|
| 1134 |
+ "321311": "宿豫区", |
|
| 1135 |
+ "321322": "沭阳县", |
|
| 1136 |
+ "321323": "泗阳县", |
|
| 1137 |
+ "321324": "泗洪县" |
|
| 1138 |
+ }, |
|
| 1139 |
+ "330000": {
|
|
| 1140 |
+ "330100": "杭州市", |
|
| 1141 |
+ "330200": "宁波市", |
|
| 1142 |
+ "330300": "温州市", |
|
| 1143 |
+ "330400": "嘉兴市", |
|
| 1144 |
+ "330500": "湖州市", |
|
| 1145 |
+ "330600": "绍兴市", |
|
| 1146 |
+ "330700": "金华市", |
|
| 1147 |
+ "330800": "衢州市", |
|
| 1148 |
+ "330900": "舟山市", |
|
| 1149 |
+ "331000": "台州市", |
|
| 1150 |
+ "331100": "丽水市" |
|
| 1151 |
+ }, |
|
| 1152 |
+ "330100": {
|
|
| 1153 |
+ "330102": "上城区", |
|
| 1154 |
+ "330103": "下城区", |
|
| 1155 |
+ "330104": "江干区", |
|
| 1156 |
+ "330105": "拱墅区", |
|
| 1157 |
+ "330106": "西湖区", |
|
| 1158 |
+ "330108": "滨江区", |
|
| 1159 |
+ "330109": "萧山区", |
|
| 1160 |
+ "330110": "余杭区", |
|
| 1161 |
+ "330111": "富阳区", |
|
| 1162 |
+ "330122": "桐庐县", |
|
| 1163 |
+ "330127": "淳安县", |
|
| 1164 |
+ "330182": "建德市", |
|
| 1165 |
+ "330185": "临安市" |
|
| 1166 |
+ }, |
|
| 1167 |
+ "330200": {
|
|
| 1168 |
+ "330203": "海曙区", |
|
| 1169 |
+ "330204": "江东区", |
|
| 1170 |
+ "330205": "江北区", |
|
| 1171 |
+ "330206": "北仑区", |
|
| 1172 |
+ "330211": "镇海区", |
|
| 1173 |
+ "330212": "鄞州区", |
|
| 1174 |
+ "330225": "象山县", |
|
| 1175 |
+ "330226": "宁海县", |
|
| 1176 |
+ "330281": "余姚市", |
|
| 1177 |
+ "330282": "慈溪市", |
|
| 1178 |
+ "330283": "奉化市" |
|
| 1179 |
+ }, |
|
| 1180 |
+ "330300": {
|
|
| 1181 |
+ "330302": "鹿城区", |
|
| 1182 |
+ "330303": "龙湾区", |
|
| 1183 |
+ "330304": "瓯海区", |
|
| 1184 |
+ "330305": "洞头区", |
|
| 1185 |
+ "330324": "永嘉县", |
|
| 1186 |
+ "330326": "平阳县", |
|
| 1187 |
+ "330327": "苍南县", |
|
| 1188 |
+ "330328": "文成县", |
|
| 1189 |
+ "330329": "泰顺县", |
|
| 1190 |
+ "330381": "瑞安市", |
|
| 1191 |
+ "330382": "乐清市" |
|
| 1192 |
+ }, |
|
| 1193 |
+ "330400": {
|
|
| 1194 |
+ "330402": "南湖区", |
|
| 1195 |
+ "330411": "秀洲区", |
|
| 1196 |
+ "330421": "嘉善县", |
|
| 1197 |
+ "330424": "海盐县", |
|
| 1198 |
+ "330481": "海宁市", |
|
| 1199 |
+ "330482": "平湖市", |
|
| 1200 |
+ "330483": "桐乡市" |
|
| 1201 |
+ }, |
|
| 1202 |
+ "330500": {
|
|
| 1203 |
+ "330502": "吴兴区", |
|
| 1204 |
+ "330503": "南浔区", |
|
| 1205 |
+ "330521": "德清县", |
|
| 1206 |
+ "330522": "长兴县", |
|
| 1207 |
+ "330523": "安吉县" |
|
| 1208 |
+ }, |
|
| 1209 |
+ "330600": {
|
|
| 1210 |
+ "330602": "越城区", |
|
| 1211 |
+ "330603": "柯桥区", |
|
| 1212 |
+ "330604": "上虞区", |
|
| 1213 |
+ "330624": "新昌县", |
|
| 1214 |
+ "330681": "诸暨市", |
|
| 1215 |
+ "330683": "嵊州市" |
|
| 1216 |
+ }, |
|
| 1217 |
+ "330700": {
|
|
| 1218 |
+ "330702": "婺城区", |
|
| 1219 |
+ "330703": "金东区", |
|
| 1220 |
+ "330723": "武义县", |
|
| 1221 |
+ "330726": "浦江县", |
|
| 1222 |
+ "330727": "磐安县", |
|
| 1223 |
+ "330781": "兰溪市", |
|
| 1224 |
+ "330782": "义乌市", |
|
| 1225 |
+ "330783": "东阳市", |
|
| 1226 |
+ "330784": "永康市" |
|
| 1227 |
+ }, |
|
| 1228 |
+ "330800": {
|
|
| 1229 |
+ "330802": "柯城区", |
|
| 1230 |
+ "330803": "衢江区", |
|
| 1231 |
+ "330822": "常山县", |
|
| 1232 |
+ "330824": "开化县", |
|
| 1233 |
+ "330825": "龙游县", |
|
| 1234 |
+ "330881": "江山市" |
|
| 1235 |
+ }, |
|
| 1236 |
+ "330900": {
|
|
| 1237 |
+ "330902": "定海区", |
|
| 1238 |
+ "330903": "普陀区", |
|
| 1239 |
+ "330921": "岱山县", |
|
| 1240 |
+ "330922": "嵊泗县" |
|
| 1241 |
+ }, |
|
| 1242 |
+ "331000": {
|
|
| 1243 |
+ "331002": "椒江区", |
|
| 1244 |
+ "331003": "黄岩区", |
|
| 1245 |
+ "331004": "路桥区", |
|
| 1246 |
+ "331021": "玉环县", |
|
| 1247 |
+ "331022": "三门县", |
|
| 1248 |
+ "331023": "天台县", |
|
| 1249 |
+ "331024": "仙居县", |
|
| 1250 |
+ "331081": "温岭市", |
|
| 1251 |
+ "331082": "临海市" |
|
| 1252 |
+ }, |
|
| 1253 |
+ "331100": {
|
|
| 1254 |
+ "331102": "莲都区", |
|
| 1255 |
+ "331121": "青田县", |
|
| 1256 |
+ "331122": "缙云县", |
|
| 1257 |
+ "331123": "遂昌县", |
|
| 1258 |
+ "331124": "松阳县", |
|
| 1259 |
+ "331125": "云和县", |
|
| 1260 |
+ "331126": "庆元县", |
|
| 1261 |
+ "331127": "景宁畲族自治县", |
|
| 1262 |
+ "331181": "龙泉市" |
|
| 1263 |
+ }, |
|
| 1264 |
+ "340000": {
|
|
| 1265 |
+ "340100": "合肥市", |
|
| 1266 |
+ "340200": "芜湖市", |
|
| 1267 |
+ "340300": "蚌埠市", |
|
| 1268 |
+ "340400": "淮南市", |
|
| 1269 |
+ "340500": "马鞍山市", |
|
| 1270 |
+ "340600": "淮北市", |
|
| 1271 |
+ "340700": "铜陵市", |
|
| 1272 |
+ "340800": "安庆市", |
|
| 1273 |
+ "341000": "黄山市", |
|
| 1274 |
+ "341100": "滁州市", |
|
| 1275 |
+ "341200": "阜阳市", |
|
| 1276 |
+ "341300": "宿州市", |
|
| 1277 |
+ "341500": "六安市", |
|
| 1278 |
+ "341600": "亳州市", |
|
| 1279 |
+ "341700": "池州市", |
|
| 1280 |
+ "341800": "宣城市" |
|
| 1281 |
+ }, |
|
| 1282 |
+ "340100": {
|
|
| 1283 |
+ "340102": "瑶海区", |
|
| 1284 |
+ "340103": "庐阳区", |
|
| 1285 |
+ "340104": "蜀山区", |
|
| 1286 |
+ "340111": "包河区", |
|
| 1287 |
+ "340121": "长丰县", |
|
| 1288 |
+ "340122": "肥东县", |
|
| 1289 |
+ "340123": "肥西县", |
|
| 1290 |
+ "340124": "庐江县", |
|
| 1291 |
+ "340181": "巢湖市" |
|
| 1292 |
+ }, |
|
| 1293 |
+ "340200": {
|
|
| 1294 |
+ "340202": "镜湖区", |
|
| 1295 |
+ "340203": "弋江区", |
|
| 1296 |
+ "340207": "鸠江区", |
|
| 1297 |
+ "340208": "三山区", |
|
| 1298 |
+ "340221": "芜湖县", |
|
| 1299 |
+ "340222": "繁昌县", |
|
| 1300 |
+ "340223": "南陵县", |
|
| 1301 |
+ "340225": "无为县" |
|
| 1302 |
+ }, |
|
| 1303 |
+ "340300": {
|
|
| 1304 |
+ "340302": "龙子湖区", |
|
| 1305 |
+ "340303": "蚌山区", |
|
| 1306 |
+ "340304": "禹会区", |
|
| 1307 |
+ "340311": "淮上区", |
|
| 1308 |
+ "340321": "怀远县", |
|
| 1309 |
+ "340322": "五河县", |
|
| 1310 |
+ "340323": "固镇县" |
|
| 1311 |
+ }, |
|
| 1312 |
+ "340400": {
|
|
| 1313 |
+ "340402": "大通区", |
|
| 1314 |
+ "340403": "田家庵区", |
|
| 1315 |
+ "340404": "谢家集区", |
|
| 1316 |
+ "340405": "八公山区", |
|
| 1317 |
+ "340406": "潘集区", |
|
| 1318 |
+ "340421": "凤台县", |
|
| 1319 |
+ "340422": "寿县" |
|
| 1320 |
+ }, |
|
| 1321 |
+ "340500": {
|
|
| 1322 |
+ "340503": "花山区", |
|
| 1323 |
+ "340504": "雨山区", |
|
| 1324 |
+ "340506": "博望区", |
|
| 1325 |
+ "340521": "当涂县", |
|
| 1326 |
+ "340522": "含山县", |
|
| 1327 |
+ "340523": "和县" |
|
| 1328 |
+ }, |
|
| 1329 |
+ "340600": {
|
|
| 1330 |
+ "340602": "杜集区", |
|
| 1331 |
+ "340603": "相山区", |
|
| 1332 |
+ "340604": "烈山区", |
|
| 1333 |
+ "340621": "濉溪县" |
|
| 1334 |
+ }, |
|
| 1335 |
+ "340700": {
|
|
| 1336 |
+ "340705": "铜官区", |
|
| 1337 |
+ "340706": "义安区", |
|
| 1338 |
+ "340711": "郊区", |
|
| 1339 |
+ "340722": "枞阳县" |
|
| 1340 |
+ }, |
|
| 1341 |
+ "340800": {
|
|
| 1342 |
+ "340802": "迎江区", |
|
| 1343 |
+ "340803": "大观区", |
|
| 1344 |
+ "340811": "宜秀区", |
|
| 1345 |
+ "340822": "怀宁县", |
|
| 1346 |
+ "340824": "潜山县", |
|
| 1347 |
+ "340825": "太湖县", |
|
| 1348 |
+ "340826": "宿松县", |
|
| 1349 |
+ "340827": "望江县", |
|
| 1350 |
+ "340828": "岳西县", |
|
| 1351 |
+ "340881": "桐城市" |
|
| 1352 |
+ }, |
|
| 1353 |
+ "341000": {
|
|
| 1354 |
+ "341002": "屯溪区", |
|
| 1355 |
+ "341003": "黄山区", |
|
| 1356 |
+ "341004": "徽州区", |
|
| 1357 |
+ "341021": "歙县", |
|
| 1358 |
+ "341022": "休宁县", |
|
| 1359 |
+ "341023": "黟县", |
|
| 1360 |
+ "341024": "祁门县" |
|
| 1361 |
+ }, |
|
| 1362 |
+ "341100": {
|
|
| 1363 |
+ "341102": "琅琊区", |
|
| 1364 |
+ "341103": "南谯区", |
|
| 1365 |
+ "341122": "来安县", |
|
| 1366 |
+ "341124": "全椒县", |
|
| 1367 |
+ "341125": "定远县", |
|
| 1368 |
+ "341126": "凤阳县", |
|
| 1369 |
+ "341181": "天长市", |
|
| 1370 |
+ "341182": "明光市" |
|
| 1371 |
+ }, |
|
| 1372 |
+ "341200": {
|
|
| 1373 |
+ "341202": "颍州区", |
|
| 1374 |
+ "341203": "颍东区", |
|
| 1375 |
+ "341204": "颍泉区", |
|
| 1376 |
+ "341221": "临泉县", |
|
| 1377 |
+ "341222": "太和县", |
|
| 1378 |
+ "341225": "阜南县", |
|
| 1379 |
+ "341226": "颍上县", |
|
| 1380 |
+ "341282": "界首市" |
|
| 1381 |
+ }, |
|
| 1382 |
+ "341300": {
|
|
| 1383 |
+ "341302": "埇桥区", |
|
| 1384 |
+ "341321": "砀山县", |
|
| 1385 |
+ "341322": "萧县", |
|
| 1386 |
+ "341323": "灵璧县", |
|
| 1387 |
+ "341324": "泗县" |
|
| 1388 |
+ }, |
|
| 1389 |
+ "341500": {
|
|
| 1390 |
+ "341502": "金安区", |
|
| 1391 |
+ "341503": "裕安区", |
|
| 1392 |
+ "341504": "叶集区", |
|
| 1393 |
+ "341522": "霍邱县", |
|
| 1394 |
+ "341523": "舒城县", |
|
| 1395 |
+ "341524": "金寨县", |
|
| 1396 |
+ "341525": "霍山县" |
|
| 1397 |
+ }, |
|
| 1398 |
+ "341600": {
|
|
| 1399 |
+ "341602": "谯城区", |
|
| 1400 |
+ "341621": "涡阳县", |
|
| 1401 |
+ "341622": "蒙城县", |
|
| 1402 |
+ "341623": "利辛县" |
|
| 1403 |
+ }, |
|
| 1404 |
+ "341700": {
|
|
| 1405 |
+ "341702": "贵池区", |
|
| 1406 |
+ "341721": "东至县", |
|
| 1407 |
+ "341722": "石台县", |
|
| 1408 |
+ "341723": "青阳县" |
|
| 1409 |
+ }, |
|
| 1410 |
+ "341800": {
|
|
| 1411 |
+ "341802": "宣州区", |
|
| 1412 |
+ "341821": "郎溪县", |
|
| 1413 |
+ "341822": "广德县", |
|
| 1414 |
+ "341823": "泾县", |
|
| 1415 |
+ "341824": "绩溪县", |
|
| 1416 |
+ "341825": "旌德县", |
|
| 1417 |
+ "341881": "宁国市" |
|
| 1418 |
+ }, |
|
| 1419 |
+ "350000": {
|
|
| 1420 |
+ "350100": "福州市", |
|
| 1421 |
+ "350200": "厦门市", |
|
| 1422 |
+ "350300": "莆田市", |
|
| 1423 |
+ "350400": "三明市", |
|
| 1424 |
+ "350500": "泉州市", |
|
| 1425 |
+ "350600": "漳州市", |
|
| 1426 |
+ "350700": "南平市", |
|
| 1427 |
+ "350800": "龙岩市", |
|
| 1428 |
+ "350900": "宁德市" |
|
| 1429 |
+ }, |
|
| 1430 |
+ "350100": {
|
|
| 1431 |
+ "350102": "鼓楼区", |
|
| 1432 |
+ "350103": "台江区", |
|
| 1433 |
+ "350104": "仓山区", |
|
| 1434 |
+ "350105": "马尾区", |
|
| 1435 |
+ "350111": "晋安区", |
|
| 1436 |
+ "350121": "闽侯县", |
|
| 1437 |
+ "350122": "连江县", |
|
| 1438 |
+ "350123": "罗源县", |
|
| 1439 |
+ "350124": "闽清县", |
|
| 1440 |
+ "350125": "永泰县", |
|
| 1441 |
+ "350128": "平潭县", |
|
| 1442 |
+ "350181": "福清市", |
|
| 1443 |
+ "350182": "长乐市" |
|
| 1444 |
+ }, |
|
| 1445 |
+ "350200": {
|
|
| 1446 |
+ "350203": "思明区", |
|
| 1447 |
+ "350205": "海沧区", |
|
| 1448 |
+ "350206": "湖里区", |
|
| 1449 |
+ "350211": "集美区", |
|
| 1450 |
+ "350212": "同安区", |
|
| 1451 |
+ "350213": "翔安区" |
|
| 1452 |
+ }, |
|
| 1453 |
+ "350300": {
|
|
| 1454 |
+ "350302": "城厢区", |
|
| 1455 |
+ "350303": "涵江区", |
|
| 1456 |
+ "350304": "荔城区", |
|
| 1457 |
+ "350305": "秀屿区", |
|
| 1458 |
+ "350322": "仙游县" |
|
| 1459 |
+ }, |
|
| 1460 |
+ "350400": {
|
|
| 1461 |
+ "350402": "梅列区", |
|
| 1462 |
+ "350403": "三元区", |
|
| 1463 |
+ "350421": "明溪县", |
|
| 1464 |
+ "350423": "清流县", |
|
| 1465 |
+ "350424": "宁化县", |
|
| 1466 |
+ "350425": "大田县", |
|
| 1467 |
+ "350426": "尤溪县", |
|
| 1468 |
+ "350427": "沙县", |
|
| 1469 |
+ "350428": "将乐县", |
|
| 1470 |
+ "350429": "泰宁县", |
|
| 1471 |
+ "350430": "建宁县", |
|
| 1472 |
+ "350481": "永安市" |
|
| 1473 |
+ }, |
|
| 1474 |
+ "350500": {
|
|
| 1475 |
+ "350502": "鲤城区", |
|
| 1476 |
+ "350503": "丰泽区", |
|
| 1477 |
+ "350504": "洛江区", |
|
| 1478 |
+ "350505": "泉港区", |
|
| 1479 |
+ "350521": "惠安县", |
|
| 1480 |
+ "350524": "安溪县", |
|
| 1481 |
+ "350525": "永春县", |
|
| 1482 |
+ "350526": "德化县", |
|
| 1483 |
+ "350527": "金门县", |
|
| 1484 |
+ "350581": "石狮市", |
|
| 1485 |
+ "350582": "晋江市", |
|
| 1486 |
+ "350583": "南安市" |
|
| 1487 |
+ }, |
|
| 1488 |
+ "350600": {
|
|
| 1489 |
+ "350602": "芗城区", |
|
| 1490 |
+ "350603": "龙文区", |
|
| 1491 |
+ "350622": "云霄县", |
|
| 1492 |
+ "350623": "漳浦县", |
|
| 1493 |
+ "350624": "诏安县", |
|
| 1494 |
+ "350625": "长泰县", |
|
| 1495 |
+ "350626": "东山县", |
|
| 1496 |
+ "350627": "南靖县", |
|
| 1497 |
+ "350628": "平和县", |
|
| 1498 |
+ "350629": "华安县", |
|
| 1499 |
+ "350681": "龙海市" |
|
| 1500 |
+ }, |
|
| 1501 |
+ "350700": {
|
|
| 1502 |
+ "350702": "延平区", |
|
| 1503 |
+ "350703": "建阳区", |
|
| 1504 |
+ "350721": "顺昌县", |
|
| 1505 |
+ "350722": "浦城县", |
|
| 1506 |
+ "350723": "光泽县", |
|
| 1507 |
+ "350724": "松溪县", |
|
| 1508 |
+ "350725": "政和县", |
|
| 1509 |
+ "350781": "邵武市", |
|
| 1510 |
+ "350782": "武夷山市", |
|
| 1511 |
+ "350783": "建瓯市" |
|
| 1512 |
+ }, |
|
| 1513 |
+ "350800": {
|
|
| 1514 |
+ "350802": "新罗区", |
|
| 1515 |
+ "350803": "永定区", |
|
| 1516 |
+ "350821": "长汀县", |
|
| 1517 |
+ "350823": "上杭县", |
|
| 1518 |
+ "350824": "武平县", |
|
| 1519 |
+ "350825": "连城县", |
|
| 1520 |
+ "350881": "漳平市" |
|
| 1521 |
+ }, |
|
| 1522 |
+ "350900": {
|
|
| 1523 |
+ "350902": "蕉城区", |
|
| 1524 |
+ "350921": "霞浦县", |
|
| 1525 |
+ "350922": "古田县", |
|
| 1526 |
+ "350923": "屏南县", |
|
| 1527 |
+ "350924": "寿宁县", |
|
| 1528 |
+ "350925": "周宁县", |
|
| 1529 |
+ "350926": "柘荣县", |
|
| 1530 |
+ "350981": "福安市", |
|
| 1531 |
+ "350982": "福鼎市" |
|
| 1532 |
+ }, |
|
| 1533 |
+ "360000": {
|
|
| 1534 |
+ "360100": "南昌市", |
|
| 1535 |
+ "360200": "景德镇市", |
|
| 1536 |
+ "360300": "萍乡市", |
|
| 1537 |
+ "360400": "九江市", |
|
| 1538 |
+ "360500": "新余市", |
|
| 1539 |
+ "360600": "鹰潭市", |
|
| 1540 |
+ "360700": "赣州市", |
|
| 1541 |
+ "360800": "吉安市", |
|
| 1542 |
+ "360900": "宜春市", |
|
| 1543 |
+ "361000": "抚州市", |
|
| 1544 |
+ "361100": "上饶市" |
|
| 1545 |
+ }, |
|
| 1546 |
+ "360100": {
|
|
| 1547 |
+ "360102": "东湖区", |
|
| 1548 |
+ "360103": "西湖区", |
|
| 1549 |
+ "360104": "青云谱区", |
|
| 1550 |
+ "360105": "湾里区", |
|
| 1551 |
+ "360111": "青山湖区", |
|
| 1552 |
+ "360112": "新建区", |
|
| 1553 |
+ "360121": "南昌县", |
|
| 1554 |
+ "360123": "安义县", |
|
| 1555 |
+ "360124": "进贤县" |
|
| 1556 |
+ }, |
|
| 1557 |
+ "360200": {
|
|
| 1558 |
+ "360202": "昌江区", |
|
| 1559 |
+ "360203": "珠山区", |
|
| 1560 |
+ "360222": "浮梁县", |
|
| 1561 |
+ "360281": "乐平市" |
|
| 1562 |
+ }, |
|
| 1563 |
+ "360300": {
|
|
| 1564 |
+ "360302": "安源区", |
|
| 1565 |
+ "360313": "湘东区", |
|
| 1566 |
+ "360321": "莲花县", |
|
| 1567 |
+ "360322": "上栗县", |
|
| 1568 |
+ "360323": "芦溪县" |
|
| 1569 |
+ }, |
|
| 1570 |
+ "360400": {
|
|
| 1571 |
+ "360402": "濂溪区", |
|
| 1572 |
+ "360403": "浔阳区", |
|
| 1573 |
+ "360421": "九江县", |
|
| 1574 |
+ "360423": "武宁县", |
|
| 1575 |
+ "360424": "修水县", |
|
| 1576 |
+ "360425": "永修县", |
|
| 1577 |
+ "360426": "德安县", |
|
| 1578 |
+ "360428": "都昌县", |
|
| 1579 |
+ "360429": "湖口县", |
|
| 1580 |
+ "360430": "彭泽县", |
|
| 1581 |
+ "360481": "瑞昌市", |
|
| 1582 |
+ "360482": "共青城市", |
|
| 1583 |
+ "360483": "庐山市" |
|
| 1584 |
+ }, |
|
| 1585 |
+ "360500": {
|
|
| 1586 |
+ "360502": "渝水区", |
|
| 1587 |
+ "360521": "分宜县" |
|
| 1588 |
+ }, |
|
| 1589 |
+ "360600": {
|
|
| 1590 |
+ "360602": "月湖区", |
|
| 1591 |
+ "360622": "余江县", |
|
| 1592 |
+ "360681": "贵溪市" |
|
| 1593 |
+ }, |
|
| 1594 |
+ "360700": {
|
|
| 1595 |
+ "360702": "章贡区", |
|
| 1596 |
+ "360703": "南康区", |
|
| 1597 |
+ "360721": "赣县", |
|
| 1598 |
+ "360722": "信丰县", |
|
| 1599 |
+ "360723": "大余县", |
|
| 1600 |
+ "360724": "上犹县", |
|
| 1601 |
+ "360725": "崇义县", |
|
| 1602 |
+ "360726": "安远县", |
|
| 1603 |
+ "360727": "龙南县", |
|
| 1604 |
+ "360728": "定南县", |
|
| 1605 |
+ "360729": "全南县", |
|
| 1606 |
+ "360730": "宁都县", |
|
| 1607 |
+ "360731": "于都县", |
|
| 1608 |
+ "360732": "兴国县", |
|
| 1609 |
+ "360733": "会昌县", |
|
| 1610 |
+ "360734": "寻乌县", |
|
| 1611 |
+ "360735": "石城县", |
|
| 1612 |
+ "360781": "瑞金市" |
|
| 1613 |
+ }, |
|
| 1614 |
+ "360800": {
|
|
| 1615 |
+ "360802": "吉州区", |
|
| 1616 |
+ "360803": "青原区", |
|
| 1617 |
+ "360821": "吉安县", |
|
| 1618 |
+ "360822": "吉水县", |
|
| 1619 |
+ "360823": "峡江县", |
|
| 1620 |
+ "360824": "新干县", |
|
| 1621 |
+ "360825": "永丰县", |
|
| 1622 |
+ "360826": "泰和县", |
|
| 1623 |
+ "360827": "遂川县", |
|
| 1624 |
+ "360828": "万安县", |
|
| 1625 |
+ "360829": "安福县", |
|
| 1626 |
+ "360830": "永新县", |
|
| 1627 |
+ "360881": "井冈山市" |
|
| 1628 |
+ }, |
|
| 1629 |
+ "360900": {
|
|
| 1630 |
+ "360902": "袁州区", |
|
| 1631 |
+ "360921": "奉新县", |
|
| 1632 |
+ "360922": "万载县", |
|
| 1633 |
+ "360923": "上高县", |
|
| 1634 |
+ "360924": "宜丰县", |
|
| 1635 |
+ "360925": "靖安县", |
|
| 1636 |
+ "360926": "铜鼓县", |
|
| 1637 |
+ "360981": "丰城市", |
|
| 1638 |
+ "360982": "樟树市", |
|
| 1639 |
+ "360983": "高安市" |
|
| 1640 |
+ }, |
|
| 1641 |
+ "361000": {
|
|
| 1642 |
+ "361002": "临川区", |
|
| 1643 |
+ "361021": "南城县", |
|
| 1644 |
+ "361022": "黎川县", |
|
| 1645 |
+ "361023": "南丰县", |
|
| 1646 |
+ "361024": "崇仁县", |
|
| 1647 |
+ "361025": "乐安县", |
|
| 1648 |
+ "361026": "宜黄县", |
|
| 1649 |
+ "361027": "金溪县", |
|
| 1650 |
+ "361028": "资溪县", |
|
| 1651 |
+ "361029": "东乡县", |
|
| 1652 |
+ "361030": "广昌县" |
|
| 1653 |
+ }, |
|
| 1654 |
+ "361100": {
|
|
| 1655 |
+ "361102": "信州区", |
|
| 1656 |
+ "361103": "广丰区", |
|
| 1657 |
+ "361121": "上饶县", |
|
| 1658 |
+ "361123": "玉山县", |
|
| 1659 |
+ "361124": "铅山县", |
|
| 1660 |
+ "361125": "横峰县", |
|
| 1661 |
+ "361126": "弋阳县", |
|
| 1662 |
+ "361127": "余干县", |
|
| 1663 |
+ "361128": "鄱阳县", |
|
| 1664 |
+ "361129": "万年县", |
|
| 1665 |
+ "361130": "婺源县", |
|
| 1666 |
+ "361181": "德兴市" |
|
| 1667 |
+ }, |
|
| 1668 |
+ "370000": {
|
|
| 1669 |
+ "370100": "济南市", |
|
| 1670 |
+ "370200": "青岛市", |
|
| 1671 |
+ "370300": "淄博市", |
|
| 1672 |
+ "370400": "枣庄市", |
|
| 1673 |
+ "370500": "东营市", |
|
| 1674 |
+ "370600": "烟台市", |
|
| 1675 |
+ "370700": "潍坊市", |
|
| 1676 |
+ "370800": "济宁市", |
|
| 1677 |
+ "370900": "泰安市", |
|
| 1678 |
+ "371000": "威海市", |
|
| 1679 |
+ "371100": "日照市", |
|
| 1680 |
+ "371200": "莱芜市", |
|
| 1681 |
+ "371300": "临沂市", |
|
| 1682 |
+ "371400": "德州市", |
|
| 1683 |
+ "371500": "聊城市", |
|
| 1684 |
+ "371600": "滨州市", |
|
| 1685 |
+ "371700": "菏泽市" |
|
| 1686 |
+ }, |
|
| 1687 |
+ "370100": {
|
|
| 1688 |
+ "370102": "历下区", |
|
| 1689 |
+ "370103": "市中区", |
|
| 1690 |
+ "370104": "槐荫区", |
|
| 1691 |
+ "370105": "天桥区", |
|
| 1692 |
+ "370112": "历城区", |
|
| 1693 |
+ "370113": "长清区", |
|
| 1694 |
+ "370124": "平阴县", |
|
| 1695 |
+ "370125": "济阳县", |
|
| 1696 |
+ "370126": "商河县", |
|
| 1697 |
+ "370181": "章丘市" |
|
| 1698 |
+ }, |
|
| 1699 |
+ "370200": {
|
|
| 1700 |
+ "370202": "市南区", |
|
| 1701 |
+ "370203": "市北区", |
|
| 1702 |
+ "370211": "黄岛区", |
|
| 1703 |
+ "370212": "崂山区", |
|
| 1704 |
+ "370213": "李沧区", |
|
| 1705 |
+ "370214": "城阳区", |
|
| 1706 |
+ "370281": "胶州市", |
|
| 1707 |
+ "370282": "即墨市", |
|
| 1708 |
+ "370283": "平度市", |
|
| 1709 |
+ "370285": "莱西市" |
|
| 1710 |
+ }, |
|
| 1711 |
+ "370300": {
|
|
| 1712 |
+ "370302": "淄川区", |
|
| 1713 |
+ "370303": "张店区", |
|
| 1714 |
+ "370304": "博山区", |
|
| 1715 |
+ "370305": "临淄区", |
|
| 1716 |
+ "370306": "周村区", |
|
| 1717 |
+ "370321": "桓台县", |
|
| 1718 |
+ "370322": "高青县", |
|
| 1719 |
+ "370323": "沂源县" |
|
| 1720 |
+ }, |
|
| 1721 |
+ "370400": {
|
|
| 1722 |
+ "370402": "市中区", |
|
| 1723 |
+ "370403": "薛城区", |
|
| 1724 |
+ "370404": "峄城区", |
|
| 1725 |
+ "370405": "台儿庄区", |
|
| 1726 |
+ "370406": "山亭区", |
|
| 1727 |
+ "370481": "滕州市" |
|
| 1728 |
+ }, |
|
| 1729 |
+ "370500": {
|
|
| 1730 |
+ "370502": "东营区", |
|
| 1731 |
+ "370503": "河口区", |
|
| 1732 |
+ "370505": "垦利区", |
|
| 1733 |
+ "370522": "利津县", |
|
| 1734 |
+ "370523": "广饶县" |
|
| 1735 |
+ }, |
|
| 1736 |
+ "370600": {
|
|
| 1737 |
+ "370602": "芝罘区", |
|
| 1738 |
+ "370611": "福山区", |
|
| 1739 |
+ "370612": "牟平区", |
|
| 1740 |
+ "370613": "莱山区", |
|
| 1741 |
+ "370634": "长岛县", |
|
| 1742 |
+ "370681": "龙口市", |
|
| 1743 |
+ "370682": "莱阳市", |
|
| 1744 |
+ "370683": "莱州市", |
|
| 1745 |
+ "370684": "蓬莱市", |
|
| 1746 |
+ "370685": "招远市", |
|
| 1747 |
+ "370686": "栖霞市", |
|
| 1748 |
+ "370687": "海阳市" |
|
| 1749 |
+ }, |
|
| 1750 |
+ "370700": {
|
|
| 1751 |
+ "370702": "潍城区", |
|
| 1752 |
+ "370703": "寒亭区", |
|
| 1753 |
+ "370704": "坊子区", |
|
| 1754 |
+ "370705": "奎文区", |
|
| 1755 |
+ "370724": "临朐县", |
|
| 1756 |
+ "370725": "昌乐县", |
|
| 1757 |
+ "370781": "青州市", |
|
| 1758 |
+ "370782": "诸城市", |
|
| 1759 |
+ "370783": "寿光市", |
|
| 1760 |
+ "370784": "安丘市", |
|
| 1761 |
+ "370785": "高密市", |
|
| 1762 |
+ "370786": "昌邑市" |
|
| 1763 |
+ }, |
|
| 1764 |
+ "370800": {
|
|
| 1765 |
+ "370811": "任城区", |
|
| 1766 |
+ "370812": "兖州区", |
|
| 1767 |
+ "370826": "微山县", |
|
| 1768 |
+ "370827": "鱼台县", |
|
| 1769 |
+ "370828": "金乡县", |
|
| 1770 |
+ "370829": "嘉祥县", |
|
| 1771 |
+ "370830": "汶上县", |
|
| 1772 |
+ "370831": "泗水县", |
|
| 1773 |
+ "370832": "梁山县", |
|
| 1774 |
+ "370881": "曲阜市", |
|
| 1775 |
+ "370883": "邹城市" |
|
| 1776 |
+ }, |
|
| 1777 |
+ "370900": {
|
|
| 1778 |
+ "370902": "泰山区", |
|
| 1779 |
+ "370911": "岱岳区", |
|
| 1780 |
+ "370921": "宁阳县", |
|
| 1781 |
+ "370923": "东平县", |
|
| 1782 |
+ "370982": "新泰市", |
|
| 1783 |
+ "370983": "肥城市" |
|
| 1784 |
+ }, |
|
| 1785 |
+ "371000": {
|
|
| 1786 |
+ "371002": "环翠区", |
|
| 1787 |
+ "371003": "文登区", |
|
| 1788 |
+ "371082": "荣成市", |
|
| 1789 |
+ "371083": "乳山市" |
|
| 1790 |
+ }, |
|
| 1791 |
+ "371100": {
|
|
| 1792 |
+ "371102": "东港区", |
|
| 1793 |
+ "371103": "岚山区", |
|
| 1794 |
+ "371121": "五莲县", |
|
| 1795 |
+ "371122": "莒县" |
|
| 1796 |
+ }, |
|
| 1797 |
+ "371200": {
|
|
| 1798 |
+ "371202": "莱城区", |
|
| 1799 |
+ "371203": "钢城区" |
|
| 1800 |
+ }, |
|
| 1801 |
+ "371300": {
|
|
| 1802 |
+ "371302": "兰山区", |
|
| 1803 |
+ "371311": "罗庄区", |
|
| 1804 |
+ "371312": "河东区", |
|
| 1805 |
+ "371321": "沂南县", |
|
| 1806 |
+ "371322": "郯城县", |
|
| 1807 |
+ "371323": "沂水县", |
|
| 1808 |
+ "371324": "兰陵县", |
|
| 1809 |
+ "371325": "费县", |
|
| 1810 |
+ "371326": "平邑县", |
|
| 1811 |
+ "371327": "莒南县", |
|
| 1812 |
+ "371328": "蒙阴县", |
|
| 1813 |
+ "371329": "临沭县" |
|
| 1814 |
+ }, |
|
| 1815 |
+ "371400": {
|
|
| 1816 |
+ "371402": "德城区", |
|
| 1817 |
+ "371403": "陵城区", |
|
| 1818 |
+ "371422": "宁津县", |
|
| 1819 |
+ "371423": "庆云县", |
|
| 1820 |
+ "371424": "临邑县", |
|
| 1821 |
+ "371425": "齐河县", |
|
| 1822 |
+ "371426": "平原县", |
|
| 1823 |
+ "371427": "夏津县", |
|
| 1824 |
+ "371428": "武城县", |
|
| 1825 |
+ "371481": "乐陵市", |
|
| 1826 |
+ "371482": "禹城市" |
|
| 1827 |
+ }, |
|
| 1828 |
+ "371500": {
|
|
| 1829 |
+ "371502": "东昌府区", |
|
| 1830 |
+ "371521": "阳谷县", |
|
| 1831 |
+ "371522": "莘县", |
|
| 1832 |
+ "371523": "茌平县", |
|
| 1833 |
+ "371524": "东阿县", |
|
| 1834 |
+ "371525": "冠县", |
|
| 1835 |
+ "371526": "高唐县", |
|
| 1836 |
+ "371581": "临清市" |
|
| 1837 |
+ }, |
|
| 1838 |
+ "371600": {
|
|
| 1839 |
+ "371602": "滨城区", |
|
| 1840 |
+ "371603": "沾化区", |
|
| 1841 |
+ "371621": "惠民县", |
|
| 1842 |
+ "371622": "阳信县", |
|
| 1843 |
+ "371623": "无棣县", |
|
| 1844 |
+ "371625": "博兴县", |
|
| 1845 |
+ "371626": "邹平县" |
|
| 1846 |
+ }, |
|
| 1847 |
+ "371700": {
|
|
| 1848 |
+ "371702": "牡丹区", |
|
| 1849 |
+ "371703": "定陶区", |
|
| 1850 |
+ "371721": "曹县", |
|
| 1851 |
+ "371722": "单县", |
|
| 1852 |
+ "371723": "成武县", |
|
| 1853 |
+ "371724": "巨野县", |
|
| 1854 |
+ "371725": "郓城县", |
|
| 1855 |
+ "371726": "鄄城县", |
|
| 1856 |
+ "371728": "东明县" |
|
| 1857 |
+ }, |
|
| 1858 |
+ "410000": {
|
|
| 1859 |
+ "410100": "郑州市", |
|
| 1860 |
+ "410200": "开封市", |
|
| 1861 |
+ "410300": "洛阳市", |
|
| 1862 |
+ "410400": "平顶山市", |
|
| 1863 |
+ "410500": "安阳市", |
|
| 1864 |
+ "410600": "鹤壁市", |
|
| 1865 |
+ "410700": "新乡市", |
|
| 1866 |
+ "410800": "焦作市", |
|
| 1867 |
+ "410900": "濮阳市", |
|
| 1868 |
+ "411000": "许昌市", |
|
| 1869 |
+ "411100": "漯河市", |
|
| 1870 |
+ "411200": "三门峡市", |
|
| 1871 |
+ "411300": "南阳市", |
|
| 1872 |
+ "411400": "商丘市", |
|
| 1873 |
+ "411500": "信阳市", |
|
| 1874 |
+ "411600": "周口市", |
|
| 1875 |
+ "411700": "驻马店市", |
|
| 1876 |
+ "419001": "济源市" |
|
| 1877 |
+ }, |
|
| 1878 |
+ "410100": {
|
|
| 1879 |
+ "410102": "中原区", |
|
| 1880 |
+ "410103": "二七区", |
|
| 1881 |
+ "410104": "管城回族区", |
|
| 1882 |
+ "410105": "金水区", |
|
| 1883 |
+ "410106": "上街区", |
|
| 1884 |
+ "410108": "惠济区", |
|
| 1885 |
+ "410122": "中牟县", |
|
| 1886 |
+ "410181": "巩义市", |
|
| 1887 |
+ "410182": "荥阳市", |
|
| 1888 |
+ "410183": "新密市", |
|
| 1889 |
+ "410184": "新郑市", |
|
| 1890 |
+ "410185": "登封市" |
|
| 1891 |
+ }, |
|
| 1892 |
+ "410200": {
|
|
| 1893 |
+ "410202": "龙亭区", |
|
| 1894 |
+ "410203": "顺河回族区", |
|
| 1895 |
+ "410204": "鼓楼区", |
|
| 1896 |
+ "410205": "禹王台区", |
|
| 1897 |
+ "410211": "金明区", |
|
| 1898 |
+ "410212": "祥符区", |
|
| 1899 |
+ "410221": "杞县", |
|
| 1900 |
+ "410222": "通许县", |
|
| 1901 |
+ "410223": "尉氏县", |
|
| 1902 |
+ "410225": "兰考县" |
|
| 1903 |
+ }, |
|
| 1904 |
+ "410300": {
|
|
| 1905 |
+ "410302": "老城区", |
|
| 1906 |
+ "410303": "西工区", |
|
| 1907 |
+ "410304": "瀍河回族区", |
|
| 1908 |
+ "410305": "涧西区", |
|
| 1909 |
+ "410306": "吉利区", |
|
| 1910 |
+ "410311": "洛龙区", |
|
| 1911 |
+ "410322": "孟津县", |
|
| 1912 |
+ "410323": "新安县", |
|
| 1913 |
+ "410324": "栾川县", |
|
| 1914 |
+ "410325": "嵩县", |
|
| 1915 |
+ "410326": "汝阳县", |
|
| 1916 |
+ "410327": "宜阳县", |
|
| 1917 |
+ "410328": "洛宁县", |
|
| 1918 |
+ "410329": "伊川县", |
|
| 1919 |
+ "410381": "偃师市" |
|
| 1920 |
+ }, |
|
| 1921 |
+ "410400": {
|
|
| 1922 |
+ "410402": "新华区", |
|
| 1923 |
+ "410403": "卫东区", |
|
| 1924 |
+ "410404": "石龙区", |
|
| 1925 |
+ "410411": "湛河区", |
|
| 1926 |
+ "410421": "宝丰县", |
|
| 1927 |
+ "410422": "叶县", |
|
| 1928 |
+ "410423": "鲁山县", |
|
| 1929 |
+ "410425": "郏县", |
|
| 1930 |
+ "410481": "舞钢市", |
|
| 1931 |
+ "410482": "汝州市" |
|
| 1932 |
+ }, |
|
| 1933 |
+ "410500": {
|
|
| 1934 |
+ "410502": "文峰区", |
|
| 1935 |
+ "410503": "北关区", |
|
| 1936 |
+ "410505": "殷都区", |
|
| 1937 |
+ "410506": "龙安区", |
|
| 1938 |
+ "410522": "安阳县", |
|
| 1939 |
+ "410523": "汤阴县", |
|
| 1940 |
+ "410526": "滑县", |
|
| 1941 |
+ "410527": "内黄县", |
|
| 1942 |
+ "410581": "林州市" |
|
| 1943 |
+ }, |
|
| 1944 |
+ "410600": {
|
|
| 1945 |
+ "410602": "鹤山区", |
|
| 1946 |
+ "410603": "山城区", |
|
| 1947 |
+ "410611": "淇滨区", |
|
| 1948 |
+ "410621": "浚县", |
|
| 1949 |
+ "410622": "淇县" |
|
| 1950 |
+ }, |
|
| 1951 |
+ "410700": {
|
|
| 1952 |
+ "410702": "红旗区", |
|
| 1953 |
+ "410703": "卫滨区", |
|
| 1954 |
+ "410704": "凤泉区", |
|
| 1955 |
+ "410711": "牧野区", |
|
| 1956 |
+ "410721": "新乡县", |
|
| 1957 |
+ "410724": "获嘉县", |
|
| 1958 |
+ "410725": "原阳县", |
|
| 1959 |
+ "410726": "延津县", |
|
| 1960 |
+ "410727": "封丘县", |
|
| 1961 |
+ "410728": "长垣县", |
|
| 1962 |
+ "410781": "卫辉市", |
|
| 1963 |
+ "410782": "辉县市" |
|
| 1964 |
+ }, |
|
| 1965 |
+ "410800": {
|
|
| 1966 |
+ "410802": "解放区", |
|
| 1967 |
+ "410803": "中站区", |
|
| 1968 |
+ "410804": "马村区", |
|
| 1969 |
+ "410811": "山阳区", |
|
| 1970 |
+ "410821": "修武县", |
|
| 1971 |
+ "410822": "博爱县", |
|
| 1972 |
+ "410823": "武陟县", |
|
| 1973 |
+ "410825": "温县", |
|
| 1974 |
+ "410882": "沁阳市", |
|
| 1975 |
+ "410883": "孟州市" |
|
| 1976 |
+ }, |
|
| 1977 |
+ "410900": {
|
|
| 1978 |
+ "410902": "华龙区", |
|
| 1979 |
+ "410922": "清丰县", |
|
| 1980 |
+ "410923": "南乐县", |
|
| 1981 |
+ "410926": "范县", |
|
| 1982 |
+ "410927": "台前县", |
|
| 1983 |
+ "410928": "濮阳县" |
|
| 1984 |
+ }, |
|
| 1985 |
+ "411000": {
|
|
| 1986 |
+ "411002": "魏都区", |
|
| 1987 |
+ "411023": "许昌县", |
|
| 1988 |
+ "411024": "鄢陵县", |
|
| 1989 |
+ "411025": "襄城县", |
|
| 1990 |
+ "411081": "禹州市", |
|
| 1991 |
+ "411082": "长葛市" |
|
| 1992 |
+ }, |
|
| 1993 |
+ "411100": {
|
|
| 1994 |
+ "411102": "源汇区", |
|
| 1995 |
+ "411103": "郾城区", |
|
| 1996 |
+ "411104": "召陵区", |
|
| 1997 |
+ "411121": "舞阳县", |
|
| 1998 |
+ "411122": "临颍县" |
|
| 1999 |
+ }, |
|
| 2000 |
+ "411200": {
|
|
| 2001 |
+ "411202": "湖滨区", |
|
| 2002 |
+ "411203": "陕州区", |
|
| 2003 |
+ "411221": "渑池县", |
|
| 2004 |
+ "411224": "卢氏县", |
|
| 2005 |
+ "411281": "义马市", |
|
| 2006 |
+ "411282": "灵宝市" |
|
| 2007 |
+ }, |
|
| 2008 |
+ "411300": {
|
|
| 2009 |
+ "411302": "宛城区", |
|
| 2010 |
+ "411303": "卧龙区", |
|
| 2011 |
+ "411321": "南召县", |
|
| 2012 |
+ "411322": "方城县", |
|
| 2013 |
+ "411323": "西峡县", |
|
| 2014 |
+ "411324": "镇平县", |
|
| 2015 |
+ "411325": "内乡县", |
|
| 2016 |
+ "411326": "淅川县", |
|
| 2017 |
+ "411327": "社旗县", |
|
| 2018 |
+ "411328": "唐河县", |
|
| 2019 |
+ "411329": "新野县", |
|
| 2020 |
+ "411330": "桐柏县", |
|
| 2021 |
+ "411381": "邓州市" |
|
| 2022 |
+ }, |
|
| 2023 |
+ "411400": {
|
|
| 2024 |
+ "411402": "梁园区", |
|
| 2025 |
+ "411403": "睢阳区", |
|
| 2026 |
+ "411421": "民权县", |
|
| 2027 |
+ "411422": "睢县", |
|
| 2028 |
+ "411423": "宁陵县", |
|
| 2029 |
+ "411424": "柘城县", |
|
| 2030 |
+ "411425": "虞城县", |
|
| 2031 |
+ "411426": "夏邑县", |
|
| 2032 |
+ "411481": "永城市" |
|
| 2033 |
+ }, |
|
| 2034 |
+ "411500": {
|
|
| 2035 |
+ "411502": "浉河区", |
|
| 2036 |
+ "411503": "平桥区", |
|
| 2037 |
+ "411521": "罗山县", |
|
| 2038 |
+ "411522": "光山县", |
|
| 2039 |
+ "411523": "新县", |
|
| 2040 |
+ "411524": "商城县", |
|
| 2041 |
+ "411525": "固始县", |
|
| 2042 |
+ "411526": "潢川县", |
|
| 2043 |
+ "411527": "淮滨县", |
|
| 2044 |
+ "411528": "息县" |
|
| 2045 |
+ }, |
|
| 2046 |
+ "411600": {
|
|
| 2047 |
+ "411602": "川汇区", |
|
| 2048 |
+ "411621": "扶沟县", |
|
| 2049 |
+ "411622": "西华县", |
|
| 2050 |
+ "411623": "商水县", |
|
| 2051 |
+ "411624": "沈丘县", |
|
| 2052 |
+ "411625": "郸城县", |
|
| 2053 |
+ "411626": "淮阳县", |
|
| 2054 |
+ "411627": "太康县", |
|
| 2055 |
+ "411628": "鹿邑县", |
|
| 2056 |
+ "411681": "项城市" |
|
| 2057 |
+ }, |
|
| 2058 |
+ "411700": {
|
|
| 2059 |
+ "411702": "驿城区", |
|
| 2060 |
+ "411721": "西平县", |
|
| 2061 |
+ "411722": "上蔡县", |
|
| 2062 |
+ "411723": "平舆县", |
|
| 2063 |
+ "411724": "正阳县", |
|
| 2064 |
+ "411725": "确山县", |
|
| 2065 |
+ "411726": "泌阳县", |
|
| 2066 |
+ "411727": "汝南县", |
|
| 2067 |
+ "411728": "遂平县", |
|
| 2068 |
+ "411729": "新蔡县" |
|
| 2069 |
+ }, |
|
| 2070 |
+ "420000": {
|
|
| 2071 |
+ "420100": "武汉市", |
|
| 2072 |
+ "420200": "黄石市", |
|
| 2073 |
+ "420300": "十堰市", |
|
| 2074 |
+ "420500": "宜昌市", |
|
| 2075 |
+ "420600": "襄阳市", |
|
| 2076 |
+ "420700": "鄂州市", |
|
| 2077 |
+ "420800": "荆门市", |
|
| 2078 |
+ "420900": "孝感市", |
|
| 2079 |
+ "421000": "荆州市", |
|
| 2080 |
+ "421100": "黄冈市", |
|
| 2081 |
+ "421200": "咸宁市", |
|
| 2082 |
+ "421300": "随州市", |
|
| 2083 |
+ "422800": "恩施土家族苗族自治州", |
|
| 2084 |
+ "429004": "仙桃市", |
|
| 2085 |
+ "429005": "潜江市", |
|
| 2086 |
+ "429006": "天门市", |
|
| 2087 |
+ "429021": "神农架林区" |
|
| 2088 |
+ }, |
|
| 2089 |
+ "420100": {
|
|
| 2090 |
+ "420102": "江岸区", |
|
| 2091 |
+ "420103": "江汉区", |
|
| 2092 |
+ "420104": "硚口区", |
|
| 2093 |
+ "420105": "汉阳区", |
|
| 2094 |
+ "420106": "武昌区", |
|
| 2095 |
+ "420107": "青山区", |
|
| 2096 |
+ "420111": "洪山区", |
|
| 2097 |
+ "420112": "东西湖区", |
|
| 2098 |
+ "420113": "汉南区", |
|
| 2099 |
+ "420114": "蔡甸区", |
|
| 2100 |
+ "420115": "江夏区", |
|
| 2101 |
+ "420116": "黄陂区", |
|
| 2102 |
+ "420117": "新洲区" |
|
| 2103 |
+ }, |
|
| 2104 |
+ "420200": {
|
|
| 2105 |
+ "420202": "黄石港区", |
|
| 2106 |
+ "420203": "西塞山区", |
|
| 2107 |
+ "420204": "下陆区", |
|
| 2108 |
+ "420205": "铁山区", |
|
| 2109 |
+ "420222": "阳新县", |
|
| 2110 |
+ "420281": "大冶市" |
|
| 2111 |
+ }, |
|
| 2112 |
+ "420300": {
|
|
| 2113 |
+ "420302": "茅箭区", |
|
| 2114 |
+ "420303": "张湾区", |
|
| 2115 |
+ "420304": "郧阳区", |
|
| 2116 |
+ "420322": "郧西县", |
|
| 2117 |
+ "420323": "竹山县", |
|
| 2118 |
+ "420324": "竹溪县", |
|
| 2119 |
+ "420325": "房县", |
|
| 2120 |
+ "420381": "丹江口市" |
|
| 2121 |
+ }, |
|
| 2122 |
+ "420500": {
|
|
| 2123 |
+ "420502": "西陵区", |
|
| 2124 |
+ "420503": "伍家岗区", |
|
| 2125 |
+ "420504": "点军区", |
|
| 2126 |
+ "420505": "猇亭区", |
|
| 2127 |
+ "420506": "夷陵区", |
|
| 2128 |
+ "420525": "远安县", |
|
| 2129 |
+ "420526": "兴山县", |
|
| 2130 |
+ "420527": "秭归县", |
|
| 2131 |
+ "420528": "长阳土家族自治县", |
|
| 2132 |
+ "420529": "五峰土家族自治县", |
|
| 2133 |
+ "420581": "宜都市", |
|
| 2134 |
+ "420582": "当阳市", |
|
| 2135 |
+ "420583": "枝江市" |
|
| 2136 |
+ }, |
|
| 2137 |
+ "420600": {
|
|
| 2138 |
+ "420602": "襄城区", |
|
| 2139 |
+ "420606": "樊城区", |
|
| 2140 |
+ "420607": "襄州区", |
|
| 2141 |
+ "420624": "南漳县", |
|
| 2142 |
+ "420625": "谷城县", |
|
| 2143 |
+ "420626": "保康县", |
|
| 2144 |
+ "420682": "老河口市", |
|
| 2145 |
+ "420683": "枣阳市", |
|
| 2146 |
+ "420684": "宜城市" |
|
| 2147 |
+ }, |
|
| 2148 |
+ "420700": {
|
|
| 2149 |
+ "420702": "梁子湖区", |
|
| 2150 |
+ "420703": "华容区", |
|
| 2151 |
+ "420704": "鄂城区" |
|
| 2152 |
+ }, |
|
| 2153 |
+ "420800": {
|
|
| 2154 |
+ "420802": "东宝区", |
|
| 2155 |
+ "420804": "掇刀区", |
|
| 2156 |
+ "420821": "京山县", |
|
| 2157 |
+ "420822": "沙洋县", |
|
| 2158 |
+ "420881": "钟祥市" |
|
| 2159 |
+ }, |
|
| 2160 |
+ "420900": {
|
|
| 2161 |
+ "420902": "孝南区", |
|
| 2162 |
+ "420921": "孝昌县", |
|
| 2163 |
+ "420922": "大悟县", |
|
| 2164 |
+ "420923": "云梦县", |
|
| 2165 |
+ "420981": "应城市", |
|
| 2166 |
+ "420982": "安陆市", |
|
| 2167 |
+ "420984": "汉川市" |
|
| 2168 |
+ }, |
|
| 2169 |
+ "421000": {
|
|
| 2170 |
+ "421002": "沙市区", |
|
| 2171 |
+ "421003": "荆州区", |
|
| 2172 |
+ "421022": "公安县", |
|
| 2173 |
+ "421023": "监利县", |
|
| 2174 |
+ "421024": "江陵县", |
|
| 2175 |
+ "421081": "石首市", |
|
| 2176 |
+ "421083": "洪湖市", |
|
| 2177 |
+ "421087": "松滋市" |
|
| 2178 |
+ }, |
|
| 2179 |
+ "421100": {
|
|
| 2180 |
+ "421102": "黄州区", |
|
| 2181 |
+ "421121": "团风县", |
|
| 2182 |
+ "421122": "红安县", |
|
| 2183 |
+ "421123": "罗田县", |
|
| 2184 |
+ "421124": "英山县", |
|
| 2185 |
+ "421125": "浠水县", |
|
| 2186 |
+ "421126": "蕲春县", |
|
| 2187 |
+ "421127": "黄梅县", |
|
| 2188 |
+ "421181": "麻城市", |
|
| 2189 |
+ "421182": "武穴市" |
|
| 2190 |
+ }, |
|
| 2191 |
+ "421200": {
|
|
| 2192 |
+ "421202": "咸安区", |
|
| 2193 |
+ "421221": "嘉鱼县", |
|
| 2194 |
+ "421222": "通城县", |
|
| 2195 |
+ "421223": "崇阳县", |
|
| 2196 |
+ "421224": "通山县", |
|
| 2197 |
+ "421281": "赤壁市" |
|
| 2198 |
+ }, |
|
| 2199 |
+ "421300": {
|
|
| 2200 |
+ "421303": "曾都区", |
|
| 2201 |
+ "421321": "随县", |
|
| 2202 |
+ "421381": "广水市" |
|
| 2203 |
+ }, |
|
| 2204 |
+ "422800": {
|
|
| 2205 |
+ "422801": "恩施市", |
|
| 2206 |
+ "422802": "利川市", |
|
| 2207 |
+ "422822": "建始县", |
|
| 2208 |
+ "422823": "巴东县", |
|
| 2209 |
+ "422825": "宣恩县", |
|
| 2210 |
+ "422826": "咸丰县", |
|
| 2211 |
+ "422827": "来凤县", |
|
| 2212 |
+ "422828": "鹤峰县" |
|
| 2213 |
+ }, |
|
| 2214 |
+ "430000": {
|
|
| 2215 |
+ "430100": "长沙市", |
|
| 2216 |
+ "430200": "株洲市", |
|
| 2217 |
+ "430300": "湘潭市", |
|
| 2218 |
+ "430400": "衡阳市", |
|
| 2219 |
+ "430500": "邵阳市", |
|
| 2220 |
+ "430600": "岳阳市", |
|
| 2221 |
+ "430700": "常德市", |
|
| 2222 |
+ "430800": "张家界市", |
|
| 2223 |
+ "430900": "益阳市", |
|
| 2224 |
+ "431000": "郴州市", |
|
| 2225 |
+ "431100": "永州市", |
|
| 2226 |
+ "431200": "怀化市", |
|
| 2227 |
+ "431300": "娄底市", |
|
| 2228 |
+ "433100": "湘西土家族苗族自治州" |
|
| 2229 |
+ }, |
|
| 2230 |
+ "430100": {
|
|
| 2231 |
+ "430102": "芙蓉区", |
|
| 2232 |
+ "430103": "天心区", |
|
| 2233 |
+ "430104": "岳麓区", |
|
| 2234 |
+ "430105": "开福区", |
|
| 2235 |
+ "430111": "雨花区", |
|
| 2236 |
+ "430112": "望城区", |
|
| 2237 |
+ "430121": "长沙县", |
|
| 2238 |
+ "430124": "宁乡县", |
|
| 2239 |
+ "430181": "浏阳市" |
|
| 2240 |
+ }, |
|
| 2241 |
+ "430200": {
|
|
| 2242 |
+ "430202": "荷塘区", |
|
| 2243 |
+ "430203": "芦淞区", |
|
| 2244 |
+ "430204": "石峰区", |
|
| 2245 |
+ "430211": "天元区", |
|
| 2246 |
+ "430221": "株洲县", |
|
| 2247 |
+ "430223": "攸县", |
|
| 2248 |
+ "430224": "茶陵县", |
|
| 2249 |
+ "430225": "炎陵县", |
|
| 2250 |
+ "430281": "醴陵市" |
|
| 2251 |
+ }, |
|
| 2252 |
+ "430300": {
|
|
| 2253 |
+ "430302": "雨湖区", |
|
| 2254 |
+ "430304": "岳塘区", |
|
| 2255 |
+ "430321": "湘潭县", |
|
| 2256 |
+ "430381": "湘乡市", |
|
| 2257 |
+ "430382": "韶山市" |
|
| 2258 |
+ }, |
|
| 2259 |
+ "430400": {
|
|
| 2260 |
+ "430405": "珠晖区", |
|
| 2261 |
+ "430406": "雁峰区", |
|
| 2262 |
+ "430407": "石鼓区", |
|
| 2263 |
+ "430408": "蒸湘区", |
|
| 2264 |
+ "430412": "南岳区", |
|
| 2265 |
+ "430421": "衡阳县", |
|
| 2266 |
+ "430422": "衡南县", |
|
| 2267 |
+ "430423": "衡山县", |
|
| 2268 |
+ "430424": "衡东县", |
|
| 2269 |
+ "430426": "祁东县", |
|
| 2270 |
+ "430481": "耒阳市", |
|
| 2271 |
+ "430482": "常宁市" |
|
| 2272 |
+ }, |
|
| 2273 |
+ "430500": {
|
|
| 2274 |
+ "430502": "双清区", |
|
| 2275 |
+ "430503": "大祥区", |
|
| 2276 |
+ "430511": "北塔区", |
|
| 2277 |
+ "430521": "邵东县", |
|
| 2278 |
+ "430522": "新邵县", |
|
| 2279 |
+ "430523": "邵阳县", |
|
| 2280 |
+ "430524": "隆回县", |
|
| 2281 |
+ "430525": "洞口县", |
|
| 2282 |
+ "430527": "绥宁县", |
|
| 2283 |
+ "430528": "新宁县", |
|
| 2284 |
+ "430529": "城步苗族自治县", |
|
| 2285 |
+ "430581": "武冈市" |
|
| 2286 |
+ }, |
|
| 2287 |
+ "430600": {
|
|
| 2288 |
+ "430602": "岳阳楼区", |
|
| 2289 |
+ "430603": "云溪区", |
|
| 2290 |
+ "430611": "君山区", |
|
| 2291 |
+ "430621": "岳阳县", |
|
| 2292 |
+ "430623": "华容县", |
|
| 2293 |
+ "430624": "湘阴县", |
|
| 2294 |
+ "430626": "平江县", |
|
| 2295 |
+ "430681": "汨罗市", |
|
| 2296 |
+ "430682": "临湘市" |
|
| 2297 |
+ }, |
|
| 2298 |
+ "430700": {
|
|
| 2299 |
+ "430702": "武陵区", |
|
| 2300 |
+ "430703": "鼎城区", |
|
| 2301 |
+ "430721": "安乡县", |
|
| 2302 |
+ "430722": "汉寿县", |
|
| 2303 |
+ "430723": "澧县", |
|
| 2304 |
+ "430724": "临澧县", |
|
| 2305 |
+ "430725": "桃源县", |
|
| 2306 |
+ "430726": "石门县", |
|
| 2307 |
+ "430781": "津市市" |
|
| 2308 |
+ }, |
|
| 2309 |
+ "430800": {
|
|
| 2310 |
+ "430802": "永定区", |
|
| 2311 |
+ "430811": "武陵源区", |
|
| 2312 |
+ "430821": "慈利县", |
|
| 2313 |
+ "430822": "桑植县" |
|
| 2314 |
+ }, |
|
| 2315 |
+ "430900": {
|
|
| 2316 |
+ "430902": "资阳区", |
|
| 2317 |
+ "430903": "赫山区", |
|
| 2318 |
+ "430921": "南县", |
|
| 2319 |
+ "430922": "桃江县", |
|
| 2320 |
+ "430923": "安化县", |
|
| 2321 |
+ "430981": "沅江市" |
|
| 2322 |
+ }, |
|
| 2323 |
+ "431000": {
|
|
| 2324 |
+ "431002": "北湖区", |
|
| 2325 |
+ "431003": "苏仙区", |
|
| 2326 |
+ "431021": "桂阳县", |
|
| 2327 |
+ "431022": "宜章县", |
|
| 2328 |
+ "431023": "永兴县", |
|
| 2329 |
+ "431024": "嘉禾县", |
|
| 2330 |
+ "431025": "临武县", |
|
| 2331 |
+ "431026": "汝城县", |
|
| 2332 |
+ "431027": "桂东县", |
|
| 2333 |
+ "431028": "安仁县", |
|
| 2334 |
+ "431081": "资兴市" |
|
| 2335 |
+ }, |
|
| 2336 |
+ "431100": {
|
|
| 2337 |
+ "431102": "零陵区", |
|
| 2338 |
+ "431103": "冷水滩区", |
|
| 2339 |
+ "431121": "祁阳县", |
|
| 2340 |
+ "431122": "东安县", |
|
| 2341 |
+ "431123": "双牌县", |
|
| 2342 |
+ "431124": "道县", |
|
| 2343 |
+ "431125": "江永县", |
|
| 2344 |
+ "431126": "宁远县", |
|
| 2345 |
+ "431127": "蓝山县", |
|
| 2346 |
+ "431128": "新田县", |
|
| 2347 |
+ "431129": "江华瑶族自治县" |
|
| 2348 |
+ }, |
|
| 2349 |
+ "431200": {
|
|
| 2350 |
+ "431202": "鹤城区", |
|
| 2351 |
+ "431221": "中方县", |
|
| 2352 |
+ "431222": "沅陵县", |
|
| 2353 |
+ "431223": "辰溪县", |
|
| 2354 |
+ "431224": "溆浦县", |
|
| 2355 |
+ "431225": "会同县", |
|
| 2356 |
+ "431226": "麻阳苗族自治县", |
|
| 2357 |
+ "431227": "新晃侗族自治县", |
|
| 2358 |
+ "431228": "芷江侗族自治县", |
|
| 2359 |
+ "431229": "靖州苗族侗族自治县", |
|
| 2360 |
+ "431230": "通道侗族自治县", |
|
| 2361 |
+ "431281": "洪江市" |
|
| 2362 |
+ }, |
|
| 2363 |
+ "431300": {
|
|
| 2364 |
+ "431302": "娄星区", |
|
| 2365 |
+ "431321": "双峰县", |
|
| 2366 |
+ "431322": "新化县", |
|
| 2367 |
+ "431381": "冷水江市", |
|
| 2368 |
+ "431382": "涟源市" |
|
| 2369 |
+ }, |
|
| 2370 |
+ "433100": {
|
|
| 2371 |
+ "433101": "吉首市", |
|
| 2372 |
+ "433122": "泸溪县", |
|
| 2373 |
+ "433123": "凤凰县", |
|
| 2374 |
+ "433124": "花垣县", |
|
| 2375 |
+ "433125": "保靖县", |
|
| 2376 |
+ "433126": "古丈县", |
|
| 2377 |
+ "433127": "永顺县", |
|
| 2378 |
+ "433130": "龙山县" |
|
| 2379 |
+ }, |
|
| 2380 |
+ "440000": {
|
|
| 2381 |
+ "440100": "广州市", |
|
| 2382 |
+ "440200": "韶关市", |
|
| 2383 |
+ "440300": "深圳市", |
|
| 2384 |
+ "440400": "珠海市", |
|
| 2385 |
+ "440500": "汕头市", |
|
| 2386 |
+ "440600": "佛山市", |
|
| 2387 |
+ "440700": "江门市", |
|
| 2388 |
+ "440800": "湛江市", |
|
| 2389 |
+ "440900": "茂名市", |
|
| 2390 |
+ "441200": "肇庆市", |
|
| 2391 |
+ "441300": "惠州市", |
|
| 2392 |
+ "441400": "梅州市", |
|
| 2393 |
+ "441500": "汕尾市", |
|
| 2394 |
+ "441600": "河源市", |
|
| 2395 |
+ "441700": "阳江市", |
|
| 2396 |
+ "441800": "清远市", |
|
| 2397 |
+ "441900": "东莞市", |
|
| 2398 |
+ "442000": "中山市", |
|
| 2399 |
+ "445100": "潮州市", |
|
| 2400 |
+ "445200": "揭阳市", |
|
| 2401 |
+ "445300": "云浮市" |
|
| 2402 |
+ }, |
|
| 2403 |
+ "440100": {
|
|
| 2404 |
+ "440103": "荔湾区", |
|
| 2405 |
+ "440104": "越秀区", |
|
| 2406 |
+ "440105": "海珠区", |
|
| 2407 |
+ "440106": "天河区", |
|
| 2408 |
+ "440111": "白云区", |
|
| 2409 |
+ "440112": "黄埔区", |
|
| 2410 |
+ "440113": "番禺区", |
|
| 2411 |
+ "440114": "花都区", |
|
| 2412 |
+ "440115": "南沙区", |
|
| 2413 |
+ "440117": "从化区", |
|
| 2414 |
+ "440118": "增城区" |
|
| 2415 |
+ }, |
|
| 2416 |
+ "440200": {
|
|
| 2417 |
+ "440203": "武江区", |
|
| 2418 |
+ "440204": "浈江区", |
|
| 2419 |
+ "440205": "曲江区", |
|
| 2420 |
+ "440222": "始兴县", |
|
| 2421 |
+ "440224": "仁化县", |
|
| 2422 |
+ "440229": "翁源县", |
|
| 2423 |
+ "440232": "乳源瑶族自治县", |
|
| 2424 |
+ "440233": "新丰县", |
|
| 2425 |
+ "440281": "乐昌市", |
|
| 2426 |
+ "440282": "南雄市" |
|
| 2427 |
+ }, |
|
| 2428 |
+ "440300": {
|
|
| 2429 |
+ "440303": "罗湖区", |
|
| 2430 |
+ "440304": "福田区", |
|
| 2431 |
+ "440305": "南山区", |
|
| 2432 |
+ "440306": "宝安区", |
|
| 2433 |
+ "440307": "龙岗区", |
|
| 2434 |
+ "440308": "盐田区" |
|
| 2435 |
+ }, |
|
| 2436 |
+ "440400": {
|
|
| 2437 |
+ "440402": "香洲区", |
|
| 2438 |
+ "440403": "斗门区", |
|
| 2439 |
+ "440404": "金湾区" |
|
| 2440 |
+ }, |
|
| 2441 |
+ "440500": {
|
|
| 2442 |
+ "440507": "龙湖区", |
|
| 2443 |
+ "440511": "金平区", |
|
| 2444 |
+ "440512": "濠江区", |
|
| 2445 |
+ "440513": "潮阳区", |
|
| 2446 |
+ "440514": "潮南区", |
|
| 2447 |
+ "440515": "澄海区", |
|
| 2448 |
+ "440523": "南澳县" |
|
| 2449 |
+ }, |
|
| 2450 |
+ "440600": {
|
|
| 2451 |
+ "440604": "禅城区", |
|
| 2452 |
+ "440605": "南海区", |
|
| 2453 |
+ "440606": "顺德区", |
|
| 2454 |
+ "440607": "三水区", |
|
| 2455 |
+ "440608": "高明区" |
|
| 2456 |
+ }, |
|
| 2457 |
+ "440700": {
|
|
| 2458 |
+ "440703": "蓬江区", |
|
| 2459 |
+ "440704": "江海区", |
|
| 2460 |
+ "440705": "新会区", |
|
| 2461 |
+ "440781": "台山市", |
|
| 2462 |
+ "440783": "开平市", |
|
| 2463 |
+ "440784": "鹤山市", |
|
| 2464 |
+ "440785": "恩平市" |
|
| 2465 |
+ }, |
|
| 2466 |
+ "440800": {
|
|
| 2467 |
+ "440802": "赤坎区", |
|
| 2468 |
+ "440803": "霞山区", |
|
| 2469 |
+ "440804": "坡头区", |
|
| 2470 |
+ "440811": "麻章区", |
|
| 2471 |
+ "440823": "遂溪县", |
|
| 2472 |
+ "440825": "徐闻县", |
|
| 2473 |
+ "440881": "廉江市", |
|
| 2474 |
+ "440882": "雷州市", |
|
| 2475 |
+ "440883": "吴川市" |
|
| 2476 |
+ }, |
|
| 2477 |
+ "440900": {
|
|
| 2478 |
+ "440902": "茂南区", |
|
| 2479 |
+ "440904": "电白区", |
|
| 2480 |
+ "440981": "高州市", |
|
| 2481 |
+ "440982": "化州市", |
|
| 2482 |
+ "440983": "信宜市" |
|
| 2483 |
+ }, |
|
| 2484 |
+ "441200": {
|
|
| 2485 |
+ "441202": "端州区", |
|
| 2486 |
+ "441203": "鼎湖区", |
|
| 2487 |
+ "441204": "高要区", |
|
| 2488 |
+ "441223": "广宁县", |
|
| 2489 |
+ "441224": "怀集县", |
|
| 2490 |
+ "441225": "封开县", |
|
| 2491 |
+ "441226": "德庆县", |
|
| 2492 |
+ "441284": "四会市" |
|
| 2493 |
+ }, |
|
| 2494 |
+ "441300": {
|
|
| 2495 |
+ "441302": "惠城区", |
|
| 2496 |
+ "441303": "惠阳区", |
|
| 2497 |
+ "441322": "博罗县", |
|
| 2498 |
+ "441323": "惠东县", |
|
| 2499 |
+ "441324": "龙门县" |
|
| 2500 |
+ }, |
|
| 2501 |
+ "441400": {
|
|
| 2502 |
+ "441402": "梅江区", |
|
| 2503 |
+ "441403": "梅县区", |
|
| 2504 |
+ "441422": "大埔县", |
|
| 2505 |
+ "441423": "丰顺县", |
|
| 2506 |
+ "441424": "五华县", |
|
| 2507 |
+ "441426": "平远县", |
|
| 2508 |
+ "441427": "蕉岭县", |
|
| 2509 |
+ "441481": "兴宁市" |
|
| 2510 |
+ }, |
|
| 2511 |
+ "441500": {
|
|
| 2512 |
+ "441502": "城区", |
|
| 2513 |
+ "441521": "海丰县", |
|
| 2514 |
+ "441523": "陆河县", |
|
| 2515 |
+ "441581": "陆丰市" |
|
| 2516 |
+ }, |
|
| 2517 |
+ "441600": {
|
|
| 2518 |
+ "441602": "源城区", |
|
| 2519 |
+ "441621": "紫金县", |
|
| 2520 |
+ "441622": "龙川县", |
|
| 2521 |
+ "441623": "连平县", |
|
| 2522 |
+ "441624": "和平县", |
|
| 2523 |
+ "441625": "东源县" |
|
| 2524 |
+ }, |
|
| 2525 |
+ "441700": {
|
|
| 2526 |
+ "441702": "江城区", |
|
| 2527 |
+ "441704": "阳东区", |
|
| 2528 |
+ "441721": "阳西县", |
|
| 2529 |
+ "441781": "阳春市" |
|
| 2530 |
+ }, |
|
| 2531 |
+ "441800": {
|
|
| 2532 |
+ "441802": "清城区", |
|
| 2533 |
+ "441803": "清新区", |
|
| 2534 |
+ "441821": "佛冈县", |
|
| 2535 |
+ "441823": "阳山县", |
|
| 2536 |
+ "441825": "连山壮族瑶族自治县", |
|
| 2537 |
+ "441826": "连南瑶族自治县", |
|
| 2538 |
+ "441881": "英德市", |
|
| 2539 |
+ "441882": "连州市" |
|
| 2540 |
+ }, |
|
| 2541 |
+ "445100": {
|
|
| 2542 |
+ "445102": "湘桥区", |
|
| 2543 |
+ "445103": "潮安区", |
|
| 2544 |
+ "445122": "饶平县" |
|
| 2545 |
+ }, |
|
| 2546 |
+ "445200": {
|
|
| 2547 |
+ "445202": "榕城区", |
|
| 2548 |
+ "445203": "揭东区", |
|
| 2549 |
+ "445222": "揭西县", |
|
| 2550 |
+ "445224": "惠来县", |
|
| 2551 |
+ "445281": "普宁市" |
|
| 2552 |
+ }, |
|
| 2553 |
+ "445300": {
|
|
| 2554 |
+ "445302": "云城区", |
|
| 2555 |
+ "445303": "云安区", |
|
| 2556 |
+ "445321": "新兴县", |
|
| 2557 |
+ "445322": "郁南县", |
|
| 2558 |
+ "445381": "罗定市" |
|
| 2559 |
+ }, |
|
| 2560 |
+ "450000": {
|
|
| 2561 |
+ "450100": "南宁市", |
|
| 2562 |
+ "450200": "柳州市", |
|
| 2563 |
+ "450300": "桂林市", |
|
| 2564 |
+ "450400": "梧州市", |
|
| 2565 |
+ "450500": "北海市", |
|
| 2566 |
+ "450600": "防城港市", |
|
| 2567 |
+ "450700": "钦州市", |
|
| 2568 |
+ "450800": "贵港市", |
|
| 2569 |
+ "450900": "玉林市", |
|
| 2570 |
+ "451000": "百色市", |
|
| 2571 |
+ "451100": "贺州市", |
|
| 2572 |
+ "451200": "河池市", |
|
| 2573 |
+ "451300": "来宾市", |
|
| 2574 |
+ "451400": "崇左市" |
|
| 2575 |
+ }, |
|
| 2576 |
+ "450100": {
|
|
| 2577 |
+ "450102": "兴宁区", |
|
| 2578 |
+ "450103": "青秀区", |
|
| 2579 |
+ "450105": "江南区", |
|
| 2580 |
+ "450107": "西乡塘区", |
|
| 2581 |
+ "450108": "良庆区", |
|
| 2582 |
+ "450109": "邕宁区", |
|
| 2583 |
+ "450110": "武鸣区", |
|
| 2584 |
+ "450123": "隆安县", |
|
| 2585 |
+ "450124": "马山县", |
|
| 2586 |
+ "450125": "上林县", |
|
| 2587 |
+ "450126": "宾阳县", |
|
| 2588 |
+ "450127": "横县" |
|
| 2589 |
+ }, |
|
| 2590 |
+ "450200": {
|
|
| 2591 |
+ "450202": "城中区", |
|
| 2592 |
+ "450203": "鱼峰区", |
|
| 2593 |
+ "450204": "柳南区", |
|
| 2594 |
+ "450205": "柳北区", |
|
| 2595 |
+ "450206": "柳江区", |
|
| 2596 |
+ "450222": "柳城县", |
|
| 2597 |
+ "450223": "鹿寨县", |
|
| 2598 |
+ "450224": "融安县", |
|
| 2599 |
+ "450225": "融水苗族自治县", |
|
| 2600 |
+ "450226": "三江侗族自治县" |
|
| 2601 |
+ }, |
|
| 2602 |
+ "450300": {
|
|
| 2603 |
+ "450302": "秀峰区", |
|
| 2604 |
+ "450303": "叠彩区", |
|
| 2605 |
+ "450304": "象山区", |
|
| 2606 |
+ "450305": "七星区", |
|
| 2607 |
+ "450311": "雁山区", |
|
| 2608 |
+ "450312": "临桂区", |
|
| 2609 |
+ "450321": "阳朔县", |
|
| 2610 |
+ "450323": "灵川县", |
|
| 2611 |
+ "450324": "全州县", |
|
| 2612 |
+ "450325": "兴安县", |
|
| 2613 |
+ "450326": "永福县", |
|
| 2614 |
+ "450327": "灌阳县", |
|
| 2615 |
+ "450328": "龙胜各族自治县", |
|
| 2616 |
+ "450329": "资源县", |
|
| 2617 |
+ "450330": "平乐县", |
|
| 2618 |
+ "450331": "荔浦县", |
|
| 2619 |
+ "450332": "恭城瑶族自治县" |
|
| 2620 |
+ }, |
|
| 2621 |
+ "450400": {
|
|
| 2622 |
+ "450403": "万秀区", |
|
| 2623 |
+ "450405": "长洲区", |
|
| 2624 |
+ "450406": "龙圩区", |
|
| 2625 |
+ "450421": "苍梧县", |
|
| 2626 |
+ "450422": "藤县", |
|
| 2627 |
+ "450423": "蒙山县", |
|
| 2628 |
+ "450481": "岑溪市" |
|
| 2629 |
+ }, |
|
| 2630 |
+ "450500": {
|
|
| 2631 |
+ "450502": "海城区", |
|
| 2632 |
+ "450503": "银海区", |
|
| 2633 |
+ "450512": "铁山港区", |
|
| 2634 |
+ "450521": "合浦县" |
|
| 2635 |
+ }, |
|
| 2636 |
+ "450600": {
|
|
| 2637 |
+ "450602": "港口区", |
|
| 2638 |
+ "450603": "防城区", |
|
| 2639 |
+ "450621": "上思县", |
|
| 2640 |
+ "450681": "东兴市" |
|
| 2641 |
+ }, |
|
| 2642 |
+ "450700": {
|
|
| 2643 |
+ "450702": "钦南区", |
|
| 2644 |
+ "450703": "钦北区", |
|
| 2645 |
+ "450721": "灵山县", |
|
| 2646 |
+ "450722": "浦北县" |
|
| 2647 |
+ }, |
|
| 2648 |
+ "450800": {
|
|
| 2649 |
+ "450802": "港北区", |
|
| 2650 |
+ "450803": "港南区", |
|
| 2651 |
+ "450804": "覃塘区", |
|
| 2652 |
+ "450821": "平南县", |
|
| 2653 |
+ "450881": "桂平市" |
|
| 2654 |
+ }, |
|
| 2655 |
+ "450900": {
|
|
| 2656 |
+ "450902": "玉州区", |
|
| 2657 |
+ "450903": "福绵区", |
|
| 2658 |
+ "450921": "容县", |
|
| 2659 |
+ "450922": "陆川县", |
|
| 2660 |
+ "450923": "博白县", |
|
| 2661 |
+ "450924": "兴业县", |
|
| 2662 |
+ "450981": "北流市" |
|
| 2663 |
+ }, |
|
| 2664 |
+ "451000": {
|
|
| 2665 |
+ "451002": "右江区", |
|
| 2666 |
+ "451021": "田阳县", |
|
| 2667 |
+ "451022": "田东县", |
|
| 2668 |
+ "451023": "平果县", |
|
| 2669 |
+ "451024": "德保县", |
|
| 2670 |
+ "451026": "那坡县", |
|
| 2671 |
+ "451027": "凌云县", |
|
| 2672 |
+ "451028": "乐业县", |
|
| 2673 |
+ "451029": "田林县", |
|
| 2674 |
+ "451030": "西林县", |
|
| 2675 |
+ "451031": "隆林各族自治县", |
|
| 2676 |
+ "451081": "靖西市" |
|
| 2677 |
+ }, |
|
| 2678 |
+ "451100": {
|
|
| 2679 |
+ "451102": "八步区", |
|
| 2680 |
+ "451103": "平桂区", |
|
| 2681 |
+ "451121": "昭平县", |
|
| 2682 |
+ "451122": "钟山县", |
|
| 2683 |
+ "451123": "富川瑶族自治县" |
|
| 2684 |
+ }, |
|
| 2685 |
+ "451200": {
|
|
| 2686 |
+ "451202": "金城江区", |
|
| 2687 |
+ "451221": "南丹县", |
|
| 2688 |
+ "451222": "天峨县", |
|
| 2689 |
+ "451223": "凤山县", |
|
| 2690 |
+ "451224": "东兰县", |
|
| 2691 |
+ "451225": "罗城仫佬族自治县", |
|
| 2692 |
+ "451226": "环江毛南族自治县", |
|
| 2693 |
+ "451227": "巴马瑶族自治县", |
|
| 2694 |
+ "451228": "都安瑶族自治县", |
|
| 2695 |
+ "451229": "大化瑶族自治县", |
|
| 2696 |
+ "451281": "宜州市" |
|
| 2697 |
+ }, |
|
| 2698 |
+ "451300": {
|
|
| 2699 |
+ "451302": "兴宾区", |
|
| 2700 |
+ "451321": "忻城县", |
|
| 2701 |
+ "451322": "象州县", |
|
| 2702 |
+ "451323": "武宣县", |
|
| 2703 |
+ "451324": "金秀瑶族自治县", |
|
| 2704 |
+ "451381": "合山市" |
|
| 2705 |
+ }, |
|
| 2706 |
+ "451400": {
|
|
| 2707 |
+ "451402": "江州区", |
|
| 2708 |
+ "451421": "扶绥县", |
|
| 2709 |
+ "451422": "宁明县", |
|
| 2710 |
+ "451423": "龙州县", |
|
| 2711 |
+ "451424": "大新县", |
|
| 2712 |
+ "451425": "天等县", |
|
| 2713 |
+ "451481": "凭祥市" |
|
| 2714 |
+ }, |
|
| 2715 |
+ "460000": {
|
|
| 2716 |
+ "460100": "海口市", |
|
| 2717 |
+ "460200": "三亚市", |
|
| 2718 |
+ "460300": "三沙市", |
|
| 2719 |
+ "460400": "儋州市", |
|
| 2720 |
+ "469001": "五指山市", |
|
| 2721 |
+ "469002": "琼海市", |
|
| 2722 |
+ "469005": "文昌市", |
|
| 2723 |
+ "469006": "万宁市", |
|
| 2724 |
+ "469007": "东方市", |
|
| 2725 |
+ "469021": "定安县", |
|
| 2726 |
+ "469022": "屯昌县", |
|
| 2727 |
+ "469023": "澄迈县", |
|
| 2728 |
+ "469024": "临高县", |
|
| 2729 |
+ "469025": "白沙黎族自治县", |
|
| 2730 |
+ "469026": "昌江黎族自治县", |
|
| 2731 |
+ "469027": "乐东黎族自治县", |
|
| 2732 |
+ "469028": "陵水黎族自治县", |
|
| 2733 |
+ "469029": "保亭黎族苗族自治县", |
|
| 2734 |
+ "469030": "琼中黎族苗族自治县" |
|
| 2735 |
+ }, |
|
| 2736 |
+ "460100": {
|
|
| 2737 |
+ "460105": "秀英区", |
|
| 2738 |
+ "460106": "龙华区", |
|
| 2739 |
+ "460107": "琼山区", |
|
| 2740 |
+ "460108": "美兰区" |
|
| 2741 |
+ }, |
|
| 2742 |
+ "460200": {
|
|
| 2743 |
+ "460202": "海棠区", |
|
| 2744 |
+ "460203": "吉阳区", |
|
| 2745 |
+ "460204": "天涯区", |
|
| 2746 |
+ "460205": "崖州区" |
|
| 2747 |
+ }, |
|
| 2748 |
+ "500000": {
|
|
| 2749 |
+ "500100": "市辖区" |
|
| 2750 |
+ }, |
|
| 2751 |
+ "500100": {
|
|
| 2752 |
+ "500101": "万州区", |
|
| 2753 |
+ "500102": "涪陵区", |
|
| 2754 |
+ "500103": "渝中区", |
|
| 2755 |
+ "500104": "大渡口区", |
|
| 2756 |
+ "500105": "江北区", |
|
| 2757 |
+ "500106": "沙坪坝区", |
|
| 2758 |
+ "500107": "九龙坡区", |
|
| 2759 |
+ "500108": "南岸区", |
|
| 2760 |
+ "500109": "北碚区", |
|
| 2761 |
+ "500110": "綦江区", |
|
| 2762 |
+ "500111": "大足区", |
|
| 2763 |
+ "500112": "渝北区", |
|
| 2764 |
+ "500113": "巴南区", |
|
| 2765 |
+ "500114": "黔江区", |
|
| 2766 |
+ "500115": "长寿区", |
|
| 2767 |
+ "500116": "江津区", |
|
| 2768 |
+ "500117": "合川区", |
|
| 2769 |
+ "500118": "永川区", |
|
| 2770 |
+ "500119": "南川区", |
|
| 2771 |
+ "500120": "璧山区", |
|
| 2772 |
+ "500151": "铜梁区", |
|
| 2773 |
+ "500152": "潼南区", |
|
| 2774 |
+ "500153": "荣昌区", |
|
| 2775 |
+ "500154": "开州区", |
|
| 2776 |
+ "500228": "梁平县", |
|
| 2777 |
+ "500229": "城口县", |
|
| 2778 |
+ "500230": "丰都县", |
|
| 2779 |
+ "500231": "垫江县", |
|
| 2780 |
+ "500232": "武隆县", |
|
| 2781 |
+ "500233": "忠县", |
|
| 2782 |
+ "500235": "云阳县", |
|
| 2783 |
+ "500236": "奉节县", |
|
| 2784 |
+ "500237": "巫山县", |
|
| 2785 |
+ "500238": "巫溪县", |
|
| 2786 |
+ "500240": "石柱土家族自治县", |
|
| 2787 |
+ "500241": "秀山土家族苗族自治县", |
|
| 2788 |
+ "500242": "酉阳土家族苗族自治县", |
|
| 2789 |
+ "500243": "彭水苗族土家族自治县" |
|
| 2790 |
+ }, |
|
| 2791 |
+ "510000": {
|
|
| 2792 |
+ "510100": "成都市", |
|
| 2793 |
+ "510300": "自贡市", |
|
| 2794 |
+ "510400": "攀枝花市", |
|
| 2795 |
+ "510500": "泸州市", |
|
| 2796 |
+ "510600": "德阳市", |
|
| 2797 |
+ "510700": "绵阳市", |
|
| 2798 |
+ "510800": "广元市", |
|
| 2799 |
+ "510900": "遂宁市", |
|
| 2800 |
+ "511000": "内江市", |
|
| 2801 |
+ "511100": "乐山市", |
|
| 2802 |
+ "511300": "南充市", |
|
| 2803 |
+ "511400": "眉山市", |
|
| 2804 |
+ "511500": "宜宾市", |
|
| 2805 |
+ "511600": "广安市", |
|
| 2806 |
+ "511700": "达州市", |
|
| 2807 |
+ "511800": "雅安市", |
|
| 2808 |
+ "511900": "巴中市", |
|
| 2809 |
+ "512000": "资阳市", |
|
| 2810 |
+ "513200": "阿坝藏族羌族自治州", |
|
| 2811 |
+ "513300": "甘孜藏族自治州", |
|
| 2812 |
+ "513400": "凉山彝族自治州" |
|
| 2813 |
+ }, |
|
| 2814 |
+ "510100": {
|
|
| 2815 |
+ "510104": "锦江区", |
|
| 2816 |
+ "510105": "青羊区", |
|
| 2817 |
+ "510106": "金牛区", |
|
| 2818 |
+ "510107": "武侯区", |
|
| 2819 |
+ "510108": "成华区", |
|
| 2820 |
+ "510112": "龙泉驿区", |
|
| 2821 |
+ "510113": "青白江区", |
|
| 2822 |
+ "510114": "新都区", |
|
| 2823 |
+ "510115": "温江区", |
|
| 2824 |
+ "510116": "双流区", |
|
| 2825 |
+ "510121": "金堂县", |
|
| 2826 |
+ "510124": "郫县", |
|
| 2827 |
+ "510129": "大邑县", |
|
| 2828 |
+ "510131": "蒲江县", |
|
| 2829 |
+ "510132": "新津县", |
|
| 2830 |
+ "510181": "都江堰市", |
|
| 2831 |
+ "510182": "彭州市", |
|
| 2832 |
+ "510183": "邛崃市", |
|
| 2833 |
+ "510184": "崇州市", |
|
| 2834 |
+ "510185": "简阳市" |
|
| 2835 |
+ }, |
|
| 2836 |
+ "510300": {
|
|
| 2837 |
+ "510302": "自流井区", |
|
| 2838 |
+ "510303": "贡井区", |
|
| 2839 |
+ "510304": "大安区", |
|
| 2840 |
+ "510311": "沿滩区", |
|
| 2841 |
+ "510321": "荣县", |
|
| 2842 |
+ "510322": "富顺县" |
|
| 2843 |
+ }, |
|
| 2844 |
+ "510400": {
|
|
| 2845 |
+ "510402": "东区", |
|
| 2846 |
+ "510403": "西区", |
|
| 2847 |
+ "510411": "仁和区", |
|
| 2848 |
+ "510421": "米易县", |
|
| 2849 |
+ "510422": "盐边县" |
|
| 2850 |
+ }, |
|
| 2851 |
+ "510500": {
|
|
| 2852 |
+ "510502": "江阳区", |
|
| 2853 |
+ "510503": "纳溪区", |
|
| 2854 |
+ "510504": "龙马潭区", |
|
| 2855 |
+ "510521": "泸县", |
|
| 2856 |
+ "510522": "合江县", |
|
| 2857 |
+ "510524": "叙永县", |
|
| 2858 |
+ "510525": "古蔺县" |
|
| 2859 |
+ }, |
|
| 2860 |
+ "510600": {
|
|
| 2861 |
+ "510603": "旌阳区", |
|
| 2862 |
+ "510623": "中江县", |
|
| 2863 |
+ "510626": "罗江县", |
|
| 2864 |
+ "510681": "广汉市", |
|
| 2865 |
+ "510682": "什邡市", |
|
| 2866 |
+ "510683": "绵竹市" |
|
| 2867 |
+ }, |
|
| 2868 |
+ "510700": {
|
|
| 2869 |
+ "510703": "涪城区", |
|
| 2870 |
+ "510704": "游仙区", |
|
| 2871 |
+ "510705": "安州区", |
|
| 2872 |
+ "510722": "三台县", |
|
| 2873 |
+ "510723": "盐亭县", |
|
| 2874 |
+ "510725": "梓潼县", |
|
| 2875 |
+ "510726": "北川羌族自治县", |
|
| 2876 |
+ "510727": "平武县", |
|
| 2877 |
+ "510781": "江油市" |
|
| 2878 |
+ }, |
|
| 2879 |
+ "510800": {
|
|
| 2880 |
+ "510802": "利州区", |
|
| 2881 |
+ "510811": "昭化区", |
|
| 2882 |
+ "510812": "朝天区", |
|
| 2883 |
+ "510821": "旺苍县", |
|
| 2884 |
+ "510822": "青川县", |
|
| 2885 |
+ "510823": "剑阁县", |
|
| 2886 |
+ "510824": "苍溪县" |
|
| 2887 |
+ }, |
|
| 2888 |
+ "510900": {
|
|
| 2889 |
+ "510903": "船山区", |
|
| 2890 |
+ "510904": "安居区", |
|
| 2891 |
+ "510921": "蓬溪县", |
|
| 2892 |
+ "510922": "射洪县", |
|
| 2893 |
+ "510923": "大英县" |
|
| 2894 |
+ }, |
|
| 2895 |
+ "511000": {
|
|
| 2896 |
+ "511002": "市中区", |
|
| 2897 |
+ "511011": "东兴区", |
|
| 2898 |
+ "511024": "威远县", |
|
| 2899 |
+ "511025": "资中县", |
|
| 2900 |
+ "511028": "隆昌县" |
|
| 2901 |
+ }, |
|
| 2902 |
+ "511100": {
|
|
| 2903 |
+ "511102": "市中区", |
|
| 2904 |
+ "511111": "沙湾区", |
|
| 2905 |
+ "511112": "五通桥区", |
|
| 2906 |
+ "511113": "金口河区", |
|
| 2907 |
+ "511123": "犍为县", |
|
| 2908 |
+ "511124": "井研县", |
|
| 2909 |
+ "511126": "夹江县", |
|
| 2910 |
+ "511129": "沐川县", |
|
| 2911 |
+ "511132": "峨边彝族自治县", |
|
| 2912 |
+ "511133": "马边彝族自治县", |
|
| 2913 |
+ "511181": "峨眉山市" |
|
| 2914 |
+ }, |
|
| 2915 |
+ "511300": {
|
|
| 2916 |
+ "511302": "顺庆区", |
|
| 2917 |
+ "511303": "高坪区", |
|
| 2918 |
+ "511304": "嘉陵区", |
|
| 2919 |
+ "511321": "南部县", |
|
| 2920 |
+ "511322": "营山县", |
|
| 2921 |
+ "511323": "蓬安县", |
|
| 2922 |
+ "511324": "仪陇县", |
|
| 2923 |
+ "511325": "西充县", |
|
| 2924 |
+ "511381": "阆中市" |
|
| 2925 |
+ }, |
|
| 2926 |
+ "511400": {
|
|
| 2927 |
+ "511402": "东坡区", |
|
| 2928 |
+ "511403": "彭山区", |
|
| 2929 |
+ "511421": "仁寿县", |
|
| 2930 |
+ "511423": "洪雅县", |
|
| 2931 |
+ "511424": "丹棱县", |
|
| 2932 |
+ "511425": "青神县" |
|
| 2933 |
+ }, |
|
| 2934 |
+ "511500": {
|
|
| 2935 |
+ "511502": "翠屏区", |
|
| 2936 |
+ "511503": "南溪区", |
|
| 2937 |
+ "511521": "宜宾县", |
|
| 2938 |
+ "511523": "江安县", |
|
| 2939 |
+ "511524": "长宁县", |
|
| 2940 |
+ "511525": "高县", |
|
| 2941 |
+ "511526": "珙县", |
|
| 2942 |
+ "511527": "筠连县", |
|
| 2943 |
+ "511528": "兴文县", |
|
| 2944 |
+ "511529": "屏山县" |
|
| 2945 |
+ }, |
|
| 2946 |
+ "511600": {
|
|
| 2947 |
+ "511602": "广安区", |
|
| 2948 |
+ "511603": "前锋区", |
|
| 2949 |
+ "511621": "岳池县", |
|
| 2950 |
+ "511622": "武胜县", |
|
| 2951 |
+ "511623": "邻水县", |
|
| 2952 |
+ "511681": "华蓥市" |
|
| 2953 |
+ }, |
|
| 2954 |
+ "511700": {
|
|
| 2955 |
+ "511702": "通川区", |
|
| 2956 |
+ "511703": "达川区", |
|
| 2957 |
+ "511722": "宣汉县", |
|
| 2958 |
+ "511723": "开江县", |
|
| 2959 |
+ "511724": "大竹县", |
|
| 2960 |
+ "511725": "渠县", |
|
| 2961 |
+ "511781": "万源市" |
|
| 2962 |
+ }, |
|
| 2963 |
+ "511800": {
|
|
| 2964 |
+ "511802": "雨城区", |
|
| 2965 |
+ "511803": "名山区", |
|
| 2966 |
+ "511822": "荥经县", |
|
| 2967 |
+ "511823": "汉源县", |
|
| 2968 |
+ "511824": "石棉县", |
|
| 2969 |
+ "511825": "天全县", |
|
| 2970 |
+ "511826": "芦山县", |
|
| 2971 |
+ "511827": "宝兴县" |
|
| 2972 |
+ }, |
|
| 2973 |
+ "511900": {
|
|
| 2974 |
+ "511902": "巴州区", |
|
| 2975 |
+ "511903": "恩阳区", |
|
| 2976 |
+ "511921": "通江县", |
|
| 2977 |
+ "511922": "南江县", |
|
| 2978 |
+ "511923": "平昌县" |
|
| 2979 |
+ }, |
|
| 2980 |
+ "512000": {
|
|
| 2981 |
+ "512002": "雁江区", |
|
| 2982 |
+ "512021": "安岳县", |
|
| 2983 |
+ "512022": "乐至县" |
|
| 2984 |
+ }, |
|
| 2985 |
+ "513200": {
|
|
| 2986 |
+ "513201": "马尔康市", |
|
| 2987 |
+ "513221": "汶川县", |
|
| 2988 |
+ "513222": "理县", |
|
| 2989 |
+ "513223": "茂县", |
|
| 2990 |
+ "513224": "松潘县", |
|
| 2991 |
+ "513225": "九寨沟县", |
|
| 2992 |
+ "513226": "金川县", |
|
| 2993 |
+ "513227": "小金县", |
|
| 2994 |
+ "513228": "黑水县", |
|
| 2995 |
+ "513230": "壤塘县", |
|
| 2996 |
+ "513231": "阿坝县", |
|
| 2997 |
+ "513232": "若尔盖县", |
|
| 2998 |
+ "513233": "红原县" |
|
| 2999 |
+ }, |
|
| 3000 |
+ "513300": {
|
|
| 3001 |
+ "513301": "康定市", |
|
| 3002 |
+ "513322": "泸定县", |
|
| 3003 |
+ "513323": "丹巴县", |
|
| 3004 |
+ "513324": "九龙县", |
|
| 3005 |
+ "513325": "雅江县", |
|
| 3006 |
+ "513326": "道孚县", |
|
| 3007 |
+ "513327": "炉霍县", |
|
| 3008 |
+ "513328": "甘孜县", |
|
| 3009 |
+ "513329": "新龙县", |
|
| 3010 |
+ "513330": "德格县", |
|
| 3011 |
+ "513331": "白玉县", |
|
| 3012 |
+ "513332": "石渠县", |
|
| 3013 |
+ "513333": "色达县", |
|
| 3014 |
+ "513334": "理塘县", |
|
| 3015 |
+ "513335": "巴塘县", |
|
| 3016 |
+ "513336": "乡城县", |
|
| 3017 |
+ "513337": "稻城县", |
|
| 3018 |
+ "513338": "得荣县" |
|
| 3019 |
+ }, |
|
| 3020 |
+ "513400": {
|
|
| 3021 |
+ "513401": "西昌市", |
|
| 3022 |
+ "513422": "木里藏族自治县", |
|
| 3023 |
+ "513423": "盐源县", |
|
| 3024 |
+ "513424": "德昌县", |
|
| 3025 |
+ "513425": "会理县", |
|
| 3026 |
+ "513426": "会东县", |
|
| 3027 |
+ "513427": "宁南县", |
|
| 3028 |
+ "513428": "普格县", |
|
| 3029 |
+ "513429": "布拖县", |
|
| 3030 |
+ "513430": "金阳县", |
|
| 3031 |
+ "513431": "昭觉县", |
|
| 3032 |
+ "513432": "喜德县", |
|
| 3033 |
+ "513433": "冕宁县", |
|
| 3034 |
+ "513434": "越西县", |
|
| 3035 |
+ "513435": "甘洛县", |
|
| 3036 |
+ "513436": "美姑县", |
|
| 3037 |
+ "513437": "雷波县" |
|
| 3038 |
+ }, |
|
| 3039 |
+ "520000": {
|
|
| 3040 |
+ "520100": "贵阳市", |
|
| 3041 |
+ "520200": "六盘水市", |
|
| 3042 |
+ "520300": "遵义市", |
|
| 3043 |
+ "520400": "安顺市", |
|
| 3044 |
+ "520500": "毕节市", |
|
| 3045 |
+ "520600": "铜仁市", |
|
| 3046 |
+ "522300": "黔西南布依族苗族自治州", |
|
| 3047 |
+ "522600": "黔东南苗族侗族自治州", |
|
| 3048 |
+ "522700": "黔南布依族苗族自治州" |
|
| 3049 |
+ }, |
|
| 3050 |
+ "520100": {
|
|
| 3051 |
+ "520102": "南明区", |
|
| 3052 |
+ "520103": "云岩区", |
|
| 3053 |
+ "520111": "花溪区", |
|
| 3054 |
+ "520112": "乌当区", |
|
| 3055 |
+ "520113": "白云区", |
|
| 3056 |
+ "520115": "观山湖区", |
|
| 3057 |
+ "520121": "开阳县", |
|
| 3058 |
+ "520122": "息烽县", |
|
| 3059 |
+ "520123": "修文县", |
|
| 3060 |
+ "520181": "清镇市" |
|
| 3061 |
+ }, |
|
| 3062 |
+ "520200": {
|
|
| 3063 |
+ "520201": "钟山区", |
|
| 3064 |
+ "520203": "六枝特区", |
|
| 3065 |
+ "520221": "水城县", |
|
| 3066 |
+ "520222": "盘县" |
|
| 3067 |
+ }, |
|
| 3068 |
+ "520300": {
|
|
| 3069 |
+ "520302": "红花岗区", |
|
| 3070 |
+ "520303": "汇川区", |
|
| 3071 |
+ "520304": "播州区", |
|
| 3072 |
+ "520322": "桐梓县", |
|
| 3073 |
+ "520323": "绥阳县", |
|
| 3074 |
+ "520324": "正安县", |
|
| 3075 |
+ "520325": "道真仡佬族苗族自治县", |
|
| 3076 |
+ "520326": "务川仡佬族苗族自治县", |
|
| 3077 |
+ "520327": "凤冈县", |
|
| 3078 |
+ "520328": "湄潭县", |
|
| 3079 |
+ "520329": "余庆县", |
|
| 3080 |
+ "520330": "习水县", |
|
| 3081 |
+ "520381": "赤水市", |
|
| 3082 |
+ "520382": "仁怀市" |
|
| 3083 |
+ }, |
|
| 3084 |
+ "520400": {
|
|
| 3085 |
+ "520402": "西秀区", |
|
| 3086 |
+ "520403": "平坝区", |
|
| 3087 |
+ "520422": "普定县", |
|
| 3088 |
+ "520423": "镇宁布依族苗族自治县", |
|
| 3089 |
+ "520424": "关岭布依族苗族自治县", |
|
| 3090 |
+ "520425": "紫云苗族布依族自治县" |
|
| 3091 |
+ }, |
|
| 3092 |
+ "520500": {
|
|
| 3093 |
+ "520502": "七星关区", |
|
| 3094 |
+ "520521": "大方县", |
|
| 3095 |
+ "520522": "黔西县", |
|
| 3096 |
+ "520523": "金沙县", |
|
| 3097 |
+ "520524": "织金县", |
|
| 3098 |
+ "520525": "纳雍县", |
|
| 3099 |
+ "520526": "威宁彝族回族苗族自治县", |
|
| 3100 |
+ "520527": "赫章县" |
|
| 3101 |
+ }, |
|
| 3102 |
+ "520600": {
|
|
| 3103 |
+ "520602": "碧江区", |
|
| 3104 |
+ "520603": "万山区", |
|
| 3105 |
+ "520621": "江口县", |
|
| 3106 |
+ "520622": "玉屏侗族自治县", |
|
| 3107 |
+ "520623": "石阡县", |
|
| 3108 |
+ "520624": "思南县", |
|
| 3109 |
+ "520625": "印江土家族苗族自治县", |
|
| 3110 |
+ "520626": "德江县", |
|
| 3111 |
+ "520627": "沿河土家族自治县", |
|
| 3112 |
+ "520628": "松桃苗族自治县" |
|
| 3113 |
+ }, |
|
| 3114 |
+ "522300": {
|
|
| 3115 |
+ "522301": "兴义市", |
|
| 3116 |
+ "522322": "兴仁县", |
|
| 3117 |
+ "522323": "普安县", |
|
| 3118 |
+ "522324": "晴隆县", |
|
| 3119 |
+ "522325": "贞丰县", |
|
| 3120 |
+ "522326": "望谟县", |
|
| 3121 |
+ "522327": "册亨县", |
|
| 3122 |
+ "522328": "安龙县" |
|
| 3123 |
+ }, |
|
| 3124 |
+ "522600": {
|
|
| 3125 |
+ "522601": "凯里市", |
|
| 3126 |
+ "522622": "黄平县", |
|
| 3127 |
+ "522623": "施秉县", |
|
| 3128 |
+ "522624": "三穗县", |
|
| 3129 |
+ "522625": "镇远县", |
|
| 3130 |
+ "522626": "岑巩县", |
|
| 3131 |
+ "522627": "天柱县", |
|
| 3132 |
+ "522628": "锦屏县", |
|
| 3133 |
+ "522629": "剑河县", |
|
| 3134 |
+ "522630": "台江县", |
|
| 3135 |
+ "522631": "黎平县", |
|
| 3136 |
+ "522632": "榕江县", |
|
| 3137 |
+ "522633": "从江县", |
|
| 3138 |
+ "522634": "雷山县", |
|
| 3139 |
+ "522635": "麻江县", |
|
| 3140 |
+ "522636": "丹寨县" |
|
| 3141 |
+ }, |
|
| 3142 |
+ "522700": {
|
|
| 3143 |
+ "522701": "都匀市", |
|
| 3144 |
+ "522702": "福泉市", |
|
| 3145 |
+ "522722": "荔波县", |
|
| 3146 |
+ "522723": "贵定县", |
|
| 3147 |
+ "522725": "瓮安县", |
|
| 3148 |
+ "522726": "独山县", |
|
| 3149 |
+ "522727": "平塘县", |
|
| 3150 |
+ "522728": "罗甸县", |
|
| 3151 |
+ "522729": "长顺县", |
|
| 3152 |
+ "522730": "龙里县", |
|
| 3153 |
+ "522731": "惠水县", |
|
| 3154 |
+ "522732": "三都水族自治县" |
|
| 3155 |
+ }, |
|
| 3156 |
+ "530000": {
|
|
| 3157 |
+ "530100": "昆明市", |
|
| 3158 |
+ "530300": "曲靖市", |
|
| 3159 |
+ "530400": "玉溪市", |
|
| 3160 |
+ "530500": "保山市", |
|
| 3161 |
+ "530600": "昭通市", |
|
| 3162 |
+ "530700": "丽江市", |
|
| 3163 |
+ "530800": "普洱市", |
|
| 3164 |
+ "530900": "临沧市", |
|
| 3165 |
+ "532300": "楚雄彝族自治州", |
|
| 3166 |
+ "532500": "红河哈尼族彝族自治州", |
|
| 3167 |
+ "532600": "文山壮族苗族自治州", |
|
| 3168 |
+ "532800": "西双版纳傣族自治州", |
|
| 3169 |
+ "532900": "大理白族自治州", |
|
| 3170 |
+ "533100": "德宏傣族景颇族自治州", |
|
| 3171 |
+ "533300": "怒江傈僳族自治州", |
|
| 3172 |
+ "533400": "迪庆藏族自治州" |
|
| 3173 |
+ }, |
|
| 3174 |
+ "530100": {
|
|
| 3175 |
+ "530102": "五华区", |
|
| 3176 |
+ "530103": "盘龙区", |
|
| 3177 |
+ "530111": "官渡区", |
|
| 3178 |
+ "530112": "西山区", |
|
| 3179 |
+ "530113": "东川区", |
|
| 3180 |
+ "530114": "呈贡区", |
|
| 3181 |
+ "530122": "晋宁县", |
|
| 3182 |
+ "530124": "富民县", |
|
| 3183 |
+ "530125": "宜良县", |
|
| 3184 |
+ "530126": "石林彝族自治县", |
|
| 3185 |
+ "530127": "嵩明县", |
|
| 3186 |
+ "530128": "禄劝彝族苗族自治县", |
|
| 3187 |
+ "530129": "寻甸回族彝族自治县", |
|
| 3188 |
+ "530181": "安宁市" |
|
| 3189 |
+ }, |
|
| 3190 |
+ "530300": {
|
|
| 3191 |
+ "530302": "麒麟区", |
|
| 3192 |
+ "530303": "沾益区", |
|
| 3193 |
+ "530321": "马龙县", |
|
| 3194 |
+ "530322": "陆良县", |
|
| 3195 |
+ "530323": "师宗县", |
|
| 3196 |
+ "530324": "罗平县", |
|
| 3197 |
+ "530325": "富源县", |
|
| 3198 |
+ "530326": "会泽县", |
|
| 3199 |
+ "530381": "宣威市" |
|
| 3200 |
+ }, |
|
| 3201 |
+ "530400": {
|
|
| 3202 |
+ "530402": "红塔区", |
|
| 3203 |
+ "530403": "江川区", |
|
| 3204 |
+ "530422": "澄江县", |
|
| 3205 |
+ "530423": "通海县", |
|
| 3206 |
+ "530424": "华宁县", |
|
| 3207 |
+ "530425": "易门县", |
|
| 3208 |
+ "530426": "峨山彝族自治县", |
|
| 3209 |
+ "530427": "新平彝族傣族自治县", |
|
| 3210 |
+ "530428": "元江哈尼族彝族傣族自治县" |
|
| 3211 |
+ }, |
|
| 3212 |
+ "530500": {
|
|
| 3213 |
+ "530502": "隆阳区", |
|
| 3214 |
+ "530521": "施甸县", |
|
| 3215 |
+ "530523": "龙陵县", |
|
| 3216 |
+ "530524": "昌宁县", |
|
| 3217 |
+ "530581": "腾冲市" |
|
| 3218 |
+ }, |
|
| 3219 |
+ "530600": {
|
|
| 3220 |
+ "530602": "昭阳区", |
|
| 3221 |
+ "530621": "鲁甸县", |
|
| 3222 |
+ "530622": "巧家县", |
|
| 3223 |
+ "530623": "盐津县", |
|
| 3224 |
+ "530624": "大关县", |
|
| 3225 |
+ "530625": "永善县", |
|
| 3226 |
+ "530626": "绥江县", |
|
| 3227 |
+ "530627": "镇雄县", |
|
| 3228 |
+ "530628": "彝良县", |
|
| 3229 |
+ "530629": "威信县", |
|
| 3230 |
+ "530630": "水富县" |
|
| 3231 |
+ }, |
|
| 3232 |
+ "530700": {
|
|
| 3233 |
+ "530702": "古城区", |
|
| 3234 |
+ "530721": "玉龙纳西族自治县", |
|
| 3235 |
+ "530722": "永胜县", |
|
| 3236 |
+ "530723": "华坪县", |
|
| 3237 |
+ "530724": "宁蒗彝族自治县" |
|
| 3238 |
+ }, |
|
| 3239 |
+ "530800": {
|
|
| 3240 |
+ "530802": "思茅区", |
|
| 3241 |
+ "530821": "宁洱哈尼族彝族自治县", |
|
| 3242 |
+ "530822": "墨江哈尼族自治县", |
|
| 3243 |
+ "530823": "景东彝族自治县", |
|
| 3244 |
+ "530824": "景谷傣族彝族自治县", |
|
| 3245 |
+ "530825": "镇沅彝族哈尼族拉祜族自治县", |
|
| 3246 |
+ "530826": "江城哈尼族彝族自治县", |
|
| 3247 |
+ "530827": "孟连傣族拉祜族佤族自治县", |
|
| 3248 |
+ "530828": "澜沧拉祜族自治县", |
|
| 3249 |
+ "530829": "西盟佤族自治县" |
|
| 3250 |
+ }, |
|
| 3251 |
+ "530900": {
|
|
| 3252 |
+ "530902": "临翔区", |
|
| 3253 |
+ "530921": "凤庆县", |
|
| 3254 |
+ "530922": "云县", |
|
| 3255 |
+ "530923": "永德县", |
|
| 3256 |
+ "530924": "镇康县", |
|
| 3257 |
+ "530925": "双江拉祜族佤族布朗族傣族自治县", |
|
| 3258 |
+ "530926": "耿马傣族佤族自治县", |
|
| 3259 |
+ "530927": "沧源佤族自治县" |
|
| 3260 |
+ }, |
|
| 3261 |
+ "532300": {
|
|
| 3262 |
+ "532301": "楚雄市", |
|
| 3263 |
+ "532322": "双柏县", |
|
| 3264 |
+ "532323": "牟定县", |
|
| 3265 |
+ "532324": "南华县", |
|
| 3266 |
+ "532325": "姚安县", |
|
| 3267 |
+ "532326": "大姚县", |
|
| 3268 |
+ "532327": "永仁县", |
|
| 3269 |
+ "532328": "元谋县", |
|
| 3270 |
+ "532329": "武定县", |
|
| 3271 |
+ "532331": "禄丰县" |
|
| 3272 |
+ }, |
|
| 3273 |
+ "532500": {
|
|
| 3274 |
+ "532501": "个旧市", |
|
| 3275 |
+ "532502": "开远市", |
|
| 3276 |
+ "532503": "蒙自市", |
|
| 3277 |
+ "532504": "弥勒市", |
|
| 3278 |
+ "532523": "屏边苗族自治县", |
|
| 3279 |
+ "532524": "建水县", |
|
| 3280 |
+ "532525": "石屏县", |
|
| 3281 |
+ "532527": "泸西县", |
|
| 3282 |
+ "532528": "元阳县", |
|
| 3283 |
+ "532529": "红河县", |
|
| 3284 |
+ "532530": "金平苗族瑶族傣族自治县", |
|
| 3285 |
+ "532531": "绿春县", |
|
| 3286 |
+ "532532": "河口瑶族自治县" |
|
| 3287 |
+ }, |
|
| 3288 |
+ "532600": {
|
|
| 3289 |
+ "532601": "文山市", |
|
| 3290 |
+ "532622": "砚山县", |
|
| 3291 |
+ "532623": "西畴县", |
|
| 3292 |
+ "532624": "麻栗坡县", |
|
| 3293 |
+ "532625": "马关县", |
|
| 3294 |
+ "532626": "丘北县", |
|
| 3295 |
+ "532627": "广南县", |
|
| 3296 |
+ "532628": "富宁县" |
|
| 3297 |
+ }, |
|
| 3298 |
+ "532800": {
|
|
| 3299 |
+ "532801": "景洪市", |
|
| 3300 |
+ "532822": "勐海县", |
|
| 3301 |
+ "532823": "勐腊县" |
|
| 3302 |
+ }, |
|
| 3303 |
+ "532900": {
|
|
| 3304 |
+ "532901": "大理市", |
|
| 3305 |
+ "532922": "漾濞彝族自治县", |
|
| 3306 |
+ "532923": "祥云县", |
|
| 3307 |
+ "532924": "宾川县", |
|
| 3308 |
+ "532925": "弥渡县", |
|
| 3309 |
+ "532926": "南涧彝族自治县", |
|
| 3310 |
+ "532927": "巍山彝族回族自治县", |
|
| 3311 |
+ "532928": "永平县", |
|
| 3312 |
+ "532929": "云龙县", |
|
| 3313 |
+ "532930": "洱源县", |
|
| 3314 |
+ "532931": "剑川县", |
|
| 3315 |
+ "532932": "鹤庆县" |
|
| 3316 |
+ }, |
|
| 3317 |
+ "533100": {
|
|
| 3318 |
+ "533102": "瑞丽市", |
|
| 3319 |
+ "533103": "芒市", |
|
| 3320 |
+ "533122": "梁河县", |
|
| 3321 |
+ "533123": "盈江县", |
|
| 3322 |
+ "533124": "陇川县" |
|
| 3323 |
+ }, |
|
| 3324 |
+ "533300": {
|
|
| 3325 |
+ "533301": "泸水市", |
|
| 3326 |
+ "533323": "福贡县", |
|
| 3327 |
+ "533324": "贡山独龙族怒族自治县", |
|
| 3328 |
+ "533325": "兰坪白族普米族自治县" |
|
| 3329 |
+ }, |
|
| 3330 |
+ "533400": {
|
|
| 3331 |
+ "533401": "香格里拉市", |
|
| 3332 |
+ "533422": "德钦县", |
|
| 3333 |
+ "533423": "维西傈僳族自治县" |
|
| 3334 |
+ }, |
|
| 3335 |
+ "540000": {
|
|
| 3336 |
+ "540100": "拉萨市", |
|
| 3337 |
+ "540200": "日喀则市", |
|
| 3338 |
+ "540300": "昌都市", |
|
| 3339 |
+ "540400": "林芝市", |
|
| 3340 |
+ "540500": "山南市", |
|
| 3341 |
+ "542400": "那曲地区", |
|
| 3342 |
+ "542500": "阿里地区" |
|
| 3343 |
+ }, |
|
| 3344 |
+ "540100": {
|
|
| 3345 |
+ "540102": "城关区", |
|
| 3346 |
+ "540103": "堆龙德庆区", |
|
| 3347 |
+ "540121": "林周县", |
|
| 3348 |
+ "540122": "当雄县", |
|
| 3349 |
+ "540123": "尼木县", |
|
| 3350 |
+ "540124": "曲水县", |
|
| 3351 |
+ "540126": "达孜县", |
|
| 3352 |
+ "540127": "墨竹工卡县" |
|
| 3353 |
+ }, |
|
| 3354 |
+ "540200": {
|
|
| 3355 |
+ "540202": "桑珠孜区", |
|
| 3356 |
+ "540221": "南木林县", |
|
| 3357 |
+ "540222": "江孜县", |
|
| 3358 |
+ "540223": "定日县", |
|
| 3359 |
+ "540224": "萨迦县", |
|
| 3360 |
+ "540225": "拉孜县", |
|
| 3361 |
+ "540226": "昂仁县", |
|
| 3362 |
+ "540227": "谢通门县", |
|
| 3363 |
+ "540228": "白朗县", |
|
| 3364 |
+ "540229": "仁布县", |
|
| 3365 |
+ "540230": "康马县", |
|
| 3366 |
+ "540231": "定结县", |
|
| 3367 |
+ "540232": "仲巴县", |
|
| 3368 |
+ "540233": "亚东县", |
|
| 3369 |
+ "540234": "吉隆县", |
|
| 3370 |
+ "540235": "聂拉木县", |
|
| 3371 |
+ "540236": "萨嘎县", |
|
| 3372 |
+ "540237": "岗巴县" |
|
| 3373 |
+ }, |
|
| 3374 |
+ "540300": {
|
|
| 3375 |
+ "540302": "卡若区", |
|
| 3376 |
+ "540321": "江达县", |
|
| 3377 |
+ "540322": "贡觉县", |
|
| 3378 |
+ "540323": "类乌齐县", |
|
| 3379 |
+ "540324": "丁青县", |
|
| 3380 |
+ "540325": "察雅县", |
|
| 3381 |
+ "540326": "八宿县", |
|
| 3382 |
+ "540327": "左贡县", |
|
| 3383 |
+ "540328": "芒康县", |
|
| 3384 |
+ "540329": "洛隆县", |
|
| 3385 |
+ "540330": "边坝县" |
|
| 3386 |
+ }, |
|
| 3387 |
+ "540400": {
|
|
| 3388 |
+ "540402": "巴宜区", |
|
| 3389 |
+ "540421": "工布江达县", |
|
| 3390 |
+ "540422": "米林县", |
|
| 3391 |
+ "540423": "墨脱县", |
|
| 3392 |
+ "540424": "波密县", |
|
| 3393 |
+ "540425": "察隅县", |
|
| 3394 |
+ "540426": "朗县" |
|
| 3395 |
+ }, |
|
| 3396 |
+ "540500": {
|
|
| 3397 |
+ "540502": "乃东区", |
|
| 3398 |
+ "540521": "扎囊县", |
|
| 3399 |
+ "540522": "贡嘎县", |
|
| 3400 |
+ "540523": "桑日县", |
|
| 3401 |
+ "540524": "琼结县", |
|
| 3402 |
+ "540525": "曲松县", |
|
| 3403 |
+ "540526": "措美县", |
|
| 3404 |
+ "540527": "洛扎县", |
|
| 3405 |
+ "540528": "加查县", |
|
| 3406 |
+ "540529": "隆子县", |
|
| 3407 |
+ "540530": "错那县", |
|
| 3408 |
+ "540531": "浪卡子县" |
|
| 3409 |
+ }, |
|
| 3410 |
+ "542400": {
|
|
| 3411 |
+ "542421": "那曲县", |
|
| 3412 |
+ "542422": "嘉黎县", |
|
| 3413 |
+ "542423": "比如县", |
|
| 3414 |
+ "542424": "聂荣县", |
|
| 3415 |
+ "542425": "安多县", |
|
| 3416 |
+ "542426": "申扎县", |
|
| 3417 |
+ "542427": "索县", |
|
| 3418 |
+ "542428": "班戈县", |
|
| 3419 |
+ "542429": "巴青县", |
|
| 3420 |
+ "542430": "尼玛县", |
|
| 3421 |
+ "542431": "双湖县" |
|
| 3422 |
+ }, |
|
| 3423 |
+ "542500": {
|
|
| 3424 |
+ "542521": "普兰县", |
|
| 3425 |
+ "542522": "札达县", |
|
| 3426 |
+ "542523": "噶尔县", |
|
| 3427 |
+ "542524": "日土县", |
|
| 3428 |
+ "542525": "革吉县", |
|
| 3429 |
+ "542526": "改则县", |
|
| 3430 |
+ "542527": "措勤县" |
|
| 3431 |
+ }, |
|
| 3432 |
+ "610000": {
|
|
| 3433 |
+ "610100": "西安市", |
|
| 3434 |
+ "610200": "铜川市", |
|
| 3435 |
+ "610300": "宝鸡市", |
|
| 3436 |
+ "610400": "咸阳市", |
|
| 3437 |
+ "610500": "渭南市", |
|
| 3438 |
+ "610600": "延安市", |
|
| 3439 |
+ "610700": "汉中市", |
|
| 3440 |
+ "610800": "榆林市", |
|
| 3441 |
+ "610900": "安康市", |
|
| 3442 |
+ "611000": "商洛市" |
|
| 3443 |
+ }, |
|
| 3444 |
+ "610100": {
|
|
| 3445 |
+ "610102": "新城区", |
|
| 3446 |
+ "610103": "碑林区", |
|
| 3447 |
+ "610104": "莲湖区", |
|
| 3448 |
+ "610111": "灞桥区", |
|
| 3449 |
+ "610112": "未央区", |
|
| 3450 |
+ "610113": "雁塔区", |
|
| 3451 |
+ "610114": "阎良区", |
|
| 3452 |
+ "610115": "临潼区", |
|
| 3453 |
+ "610116": "长安区", |
|
| 3454 |
+ "610117": "高陵区", |
|
| 3455 |
+ "610122": "蓝田县", |
|
| 3456 |
+ "610124": "周至县", |
|
| 3457 |
+ "610125": "户县" |
|
| 3458 |
+ }, |
|
| 3459 |
+ "610200": {
|
|
| 3460 |
+ "610202": "王益区", |
|
| 3461 |
+ "610203": "印台区", |
|
| 3462 |
+ "610204": "耀州区", |
|
| 3463 |
+ "610222": "宜君县" |
|
| 3464 |
+ }, |
|
| 3465 |
+ "610300": {
|
|
| 3466 |
+ "610302": "渭滨区", |
|
| 3467 |
+ "610303": "金台区", |
|
| 3468 |
+ "610304": "陈仓区", |
|
| 3469 |
+ "610322": "凤翔县", |
|
| 3470 |
+ "610323": "岐山县", |
|
| 3471 |
+ "610324": "扶风县", |
|
| 3472 |
+ "610326": "眉县", |
|
| 3473 |
+ "610327": "陇县", |
|
| 3474 |
+ "610328": "千阳县", |
|
| 3475 |
+ "610329": "麟游县", |
|
| 3476 |
+ "610330": "凤县", |
|
| 3477 |
+ "610331": "太白县" |
|
| 3478 |
+ }, |
|
| 3479 |
+ "610400": {
|
|
| 3480 |
+ "610402": "秦都区", |
|
| 3481 |
+ "610403": "杨陵区", |
|
| 3482 |
+ "610404": "渭城区", |
|
| 3483 |
+ "610422": "三原县", |
|
| 3484 |
+ "610423": "泾阳县", |
|
| 3485 |
+ "610424": "乾县", |
|
| 3486 |
+ "610425": "礼泉县", |
|
| 3487 |
+ "610426": "永寿县", |
|
| 3488 |
+ "610427": "彬县", |
|
| 3489 |
+ "610428": "长武县", |
|
| 3490 |
+ "610429": "旬邑县", |
|
| 3491 |
+ "610430": "淳化县", |
|
| 3492 |
+ "610431": "武功县", |
|
| 3493 |
+ "610481": "兴平市" |
|
| 3494 |
+ }, |
|
| 3495 |
+ "610500": {
|
|
| 3496 |
+ "610502": "临渭区", |
|
| 3497 |
+ "610503": "华州区", |
|
| 3498 |
+ "610522": "潼关县", |
|
| 3499 |
+ "610523": "大荔县", |
|
| 3500 |
+ "610524": "合阳县", |
|
| 3501 |
+ "610525": "澄城县", |
|
| 3502 |
+ "610526": "蒲城县", |
|
| 3503 |
+ "610527": "白水县", |
|
| 3504 |
+ "610528": "富平县", |
|
| 3505 |
+ "610581": "韩城市", |
|
| 3506 |
+ "610582": "华阴市" |
|
| 3507 |
+ }, |
|
| 3508 |
+ "610600": {
|
|
| 3509 |
+ "610602": "宝塔区", |
|
| 3510 |
+ "610603": "安塞区", |
|
| 3511 |
+ "610621": "延长县", |
|
| 3512 |
+ "610622": "延川县", |
|
| 3513 |
+ "610623": "子长县", |
|
| 3514 |
+ "610625": "志丹县", |
|
| 3515 |
+ "610626": "吴起县", |
|
| 3516 |
+ "610627": "甘泉县", |
|
| 3517 |
+ "610628": "富县", |
|
| 3518 |
+ "610629": "洛川县", |
|
| 3519 |
+ "610630": "宜川县", |
|
| 3520 |
+ "610631": "黄龙县", |
|
| 3521 |
+ "610632": "黄陵县" |
|
| 3522 |
+ }, |
|
| 3523 |
+ "610700": {
|
|
| 3524 |
+ "610702": "汉台区", |
|
| 3525 |
+ "610721": "南郑县", |
|
| 3526 |
+ "610722": "城固县", |
|
| 3527 |
+ "610723": "洋县", |
|
| 3528 |
+ "610724": "西乡县", |
|
| 3529 |
+ "610725": "勉县", |
|
| 3530 |
+ "610726": "宁强县", |
|
| 3531 |
+ "610727": "略阳县", |
|
| 3532 |
+ "610728": "镇巴县", |
|
| 3533 |
+ "610729": "留坝县", |
|
| 3534 |
+ "610730": "佛坪县" |
|
| 3535 |
+ }, |
|
| 3536 |
+ "610800": {
|
|
| 3537 |
+ "610802": "榆阳区", |
|
| 3538 |
+ "610803": "横山区", |
|
| 3539 |
+ "610821": "神木县", |
|
| 3540 |
+ "610822": "府谷县", |
|
| 3541 |
+ "610824": "靖边县", |
|
| 3542 |
+ "610825": "定边县", |
|
| 3543 |
+ "610826": "绥德县", |
|
| 3544 |
+ "610827": "米脂县", |
|
| 3545 |
+ "610828": "佳县", |
|
| 3546 |
+ "610829": "吴堡县", |
|
| 3547 |
+ "610830": "清涧县", |
|
| 3548 |
+ "610831": "子洲县" |
|
| 3549 |
+ }, |
|
| 3550 |
+ "610900": {
|
|
| 3551 |
+ "610902": "汉滨区", |
|
| 3552 |
+ "610921": "汉阴县", |
|
| 3553 |
+ "610922": "石泉县", |
|
| 3554 |
+ "610923": "宁陕县", |
|
| 3555 |
+ "610924": "紫阳县", |
|
| 3556 |
+ "610925": "岚皋县", |
|
| 3557 |
+ "610926": "平利县", |
|
| 3558 |
+ "610927": "镇坪县", |
|
| 3559 |
+ "610928": "旬阳县", |
|
| 3560 |
+ "610929": "白河县" |
|
| 3561 |
+ }, |
|
| 3562 |
+ "611000": {
|
|
| 3563 |
+ "611002": "商州区", |
|
| 3564 |
+ "611021": "洛南县", |
|
| 3565 |
+ "611022": "丹凤县", |
|
| 3566 |
+ "611023": "商南县", |
|
| 3567 |
+ "611024": "山阳县", |
|
| 3568 |
+ "611025": "镇安县", |
|
| 3569 |
+ "611026": "柞水县" |
|
| 3570 |
+ }, |
|
| 3571 |
+ "620000": {
|
|
| 3572 |
+ "620100": "兰州市", |
|
| 3573 |
+ "620200": "嘉峪关市", |
|
| 3574 |
+ "620300": "金昌市", |
|
| 3575 |
+ "620400": "白银市", |
|
| 3576 |
+ "620500": "天水市", |
|
| 3577 |
+ "620600": "武威市", |
|
| 3578 |
+ "620700": "张掖市", |
|
| 3579 |
+ "620800": "平凉市", |
|
| 3580 |
+ "620900": "酒泉市", |
|
| 3581 |
+ "621000": "庆阳市", |
|
| 3582 |
+ "621100": "定西市", |
|
| 3583 |
+ "621200": "陇南市", |
|
| 3584 |
+ "622900": "临夏回族自治州", |
|
| 3585 |
+ "623000": "甘南藏族自治州" |
|
| 3586 |
+ }, |
|
| 3587 |
+ "620100": {
|
|
| 3588 |
+ "620102": "城关区", |
|
| 3589 |
+ "620103": "七里河区", |
|
| 3590 |
+ "620104": "西固区", |
|
| 3591 |
+ "620105": "安宁区", |
|
| 3592 |
+ "620111": "红古区", |
|
| 3593 |
+ "620121": "永登县", |
|
| 3594 |
+ "620122": "皋兰县", |
|
| 3595 |
+ "620123": "榆中县" |
|
| 3596 |
+ }, |
|
| 3597 |
+ "620300": {
|
|
| 3598 |
+ "620302": "金川区", |
|
| 3599 |
+ "620321": "永昌县" |
|
| 3600 |
+ }, |
|
| 3601 |
+ "620400": {
|
|
| 3602 |
+ "620402": "白银区", |
|
| 3603 |
+ "620403": "平川区", |
|
| 3604 |
+ "620421": "靖远县", |
|
| 3605 |
+ "620422": "会宁县", |
|
| 3606 |
+ "620423": "景泰县" |
|
| 3607 |
+ }, |
|
| 3608 |
+ "620500": {
|
|
| 3609 |
+ "620502": "秦州区", |
|
| 3610 |
+ "620503": "麦积区", |
|
| 3611 |
+ "620521": "清水县", |
|
| 3612 |
+ "620522": "秦安县", |
|
| 3613 |
+ "620523": "甘谷县", |
|
| 3614 |
+ "620524": "武山县", |
|
| 3615 |
+ "620525": "张家川回族自治县" |
|
| 3616 |
+ }, |
|
| 3617 |
+ "620600": {
|
|
| 3618 |
+ "620602": "凉州区", |
|
| 3619 |
+ "620621": "民勤县", |
|
| 3620 |
+ "620622": "古浪县", |
|
| 3621 |
+ "620623": "天祝藏族自治县" |
|
| 3622 |
+ }, |
|
| 3623 |
+ "620700": {
|
|
| 3624 |
+ "620702": "甘州区", |
|
| 3625 |
+ "620721": "肃南裕固族自治县", |
|
| 3626 |
+ "620722": "民乐县", |
|
| 3627 |
+ "620723": "临泽县", |
|
| 3628 |
+ "620724": "高台县", |
|
| 3629 |
+ "620725": "山丹县" |
|
| 3630 |
+ }, |
|
| 3631 |
+ "620800": {
|
|
| 3632 |
+ "620802": "崆峒区", |
|
| 3633 |
+ "620821": "泾川县", |
|
| 3634 |
+ "620822": "灵台县", |
|
| 3635 |
+ "620823": "崇信县", |
|
| 3636 |
+ "620824": "华亭县", |
|
| 3637 |
+ "620825": "庄浪县", |
|
| 3638 |
+ "620826": "静宁县" |
|
| 3639 |
+ }, |
|
| 3640 |
+ "620900": {
|
|
| 3641 |
+ "620902": "肃州区", |
|
| 3642 |
+ "620921": "金塔县", |
|
| 3643 |
+ "620922": "瓜州县", |
|
| 3644 |
+ "620923": "肃北蒙古族自治县", |
|
| 3645 |
+ "620924": "阿克塞哈萨克族自治县", |
|
| 3646 |
+ "620981": "玉门市", |
|
| 3647 |
+ "620982": "敦煌市" |
|
| 3648 |
+ }, |
|
| 3649 |
+ "621000": {
|
|
| 3650 |
+ "621002": "西峰区", |
|
| 3651 |
+ "621021": "庆城县", |
|
| 3652 |
+ "621022": "环县", |
|
| 3653 |
+ "621023": "华池县", |
|
| 3654 |
+ "621024": "合水县", |
|
| 3655 |
+ "621025": "正宁县", |
|
| 3656 |
+ "621026": "宁县", |
|
| 3657 |
+ "621027": "镇原县" |
|
| 3658 |
+ }, |
|
| 3659 |
+ "621100": {
|
|
| 3660 |
+ "621102": "安定区", |
|
| 3661 |
+ "621121": "通渭县", |
|
| 3662 |
+ "621122": "陇西县", |
|
| 3663 |
+ "621123": "渭源县", |
|
| 3664 |
+ "621124": "临洮县", |
|
| 3665 |
+ "621125": "漳县", |
|
| 3666 |
+ "621126": "岷县" |
|
| 3667 |
+ }, |
|
| 3668 |
+ "621200": {
|
|
| 3669 |
+ "621202": "武都区", |
|
| 3670 |
+ "621221": "成县", |
|
| 3671 |
+ "621222": "文县", |
|
| 3672 |
+ "621223": "宕昌县", |
|
| 3673 |
+ "621224": "康县", |
|
| 3674 |
+ "621225": "西和县", |
|
| 3675 |
+ "621226": "礼县", |
|
| 3676 |
+ "621227": "徽县", |
|
| 3677 |
+ "621228": "两当县" |
|
| 3678 |
+ }, |
|
| 3679 |
+ "622900": {
|
|
| 3680 |
+ "622901": "临夏市", |
|
| 3681 |
+ "622921": "临夏县", |
|
| 3682 |
+ "622922": "康乐县", |
|
| 3683 |
+ "622923": "永靖县", |
|
| 3684 |
+ "622924": "广河县", |
|
| 3685 |
+ "622925": "和政县", |
|
| 3686 |
+ "622926": "东乡族自治县", |
|
| 3687 |
+ "622927": "积石山保安族东乡族撒拉族自治县" |
|
| 3688 |
+ }, |
|
| 3689 |
+ "623000": {
|
|
| 3690 |
+ "623001": "合作市", |
|
| 3691 |
+ "623021": "临潭县", |
|
| 3692 |
+ "623022": "卓尼县", |
|
| 3693 |
+ "623023": "舟曲县", |
|
| 3694 |
+ "623024": "迭部县", |
|
| 3695 |
+ "623025": "玛曲县", |
|
| 3696 |
+ "623026": "碌曲县", |
|
| 3697 |
+ "623027": "夏河县" |
|
| 3698 |
+ }, |
|
| 3699 |
+ "630000": {
|
|
| 3700 |
+ "630100": "西宁市", |
|
| 3701 |
+ "630200": "海东市", |
|
| 3702 |
+ "632200": "海北藏族自治州", |
|
| 3703 |
+ "632300": "黄南藏族自治州", |
|
| 3704 |
+ "632500": "海南藏族自治州", |
|
| 3705 |
+ "632600": "果洛藏族自治州", |
|
| 3706 |
+ "632700": "玉树藏族自治州", |
|
| 3707 |
+ "632800": "海西蒙古族藏族自治州" |
|
| 3708 |
+ }, |
|
| 3709 |
+ "630100": {
|
|
| 3710 |
+ "630102": "城东区", |
|
| 3711 |
+ "630103": "城中区", |
|
| 3712 |
+ "630104": "城西区", |
|
| 3713 |
+ "630105": "城北区", |
|
| 3714 |
+ "630121": "大通回族土族自治县", |
|
| 3715 |
+ "630122": "湟中县", |
|
| 3716 |
+ "630123": "湟源县" |
|
| 3717 |
+ }, |
|
| 3718 |
+ "630200": {
|
|
| 3719 |
+ "630202": "乐都区", |
|
| 3720 |
+ "630203": "平安区", |
|
| 3721 |
+ "630222": "民和回族土族自治县", |
|
| 3722 |
+ "630223": "互助土族自治县", |
|
| 3723 |
+ "630224": "化隆回族自治县", |
|
| 3724 |
+ "630225": "循化撒拉族自治县" |
|
| 3725 |
+ }, |
|
| 3726 |
+ "632200": {
|
|
| 3727 |
+ "632221": "门源回族自治县", |
|
| 3728 |
+ "632222": "祁连县", |
|
| 3729 |
+ "632223": "海晏县", |
|
| 3730 |
+ "632224": "刚察县" |
|
| 3731 |
+ }, |
|
| 3732 |
+ "632300": {
|
|
| 3733 |
+ "632321": "同仁县", |
|
| 3734 |
+ "632322": "尖扎县", |
|
| 3735 |
+ "632323": "泽库县", |
|
| 3736 |
+ "632324": "河南蒙古族自治县" |
|
| 3737 |
+ }, |
|
| 3738 |
+ "632500": {
|
|
| 3739 |
+ "632521": "共和县", |
|
| 3740 |
+ "632522": "同德县", |
|
| 3741 |
+ "632523": "贵德县", |
|
| 3742 |
+ "632524": "兴海县", |
|
| 3743 |
+ "632525": "贵南县" |
|
| 3744 |
+ }, |
|
| 3745 |
+ "632600": {
|
|
| 3746 |
+ "632621": "玛沁县", |
|
| 3747 |
+ "632622": "班玛县", |
|
| 3748 |
+ "632623": "甘德县", |
|
| 3749 |
+ "632624": "达日县", |
|
| 3750 |
+ "632625": "久治县", |
|
| 3751 |
+ "632626": "玛多县" |
|
| 3752 |
+ }, |
|
| 3753 |
+ "632700": {
|
|
| 3754 |
+ "632701": "玉树市", |
|
| 3755 |
+ "632722": "杂多县", |
|
| 3756 |
+ "632723": "称多县", |
|
| 3757 |
+ "632724": "治多县", |
|
| 3758 |
+ "632725": "囊谦县", |
|
| 3759 |
+ "632726": "曲麻莱县" |
|
| 3760 |
+ }, |
|
| 3761 |
+ "632800": {
|
|
| 3762 |
+ "632801": "格尔木市", |
|
| 3763 |
+ "632802": "德令哈市", |
|
| 3764 |
+ "632821": "乌兰县", |
|
| 3765 |
+ "632822": "都兰县", |
|
| 3766 |
+ "632823": "天峻县" |
|
| 3767 |
+ }, |
|
| 3768 |
+ "640000": {
|
|
| 3769 |
+ "640100": "银川市", |
|
| 3770 |
+ "640200": "石嘴山市", |
|
| 3771 |
+ "640300": "吴忠市", |
|
| 3772 |
+ "640400": "固原市", |
|
| 3773 |
+ "640500": "中卫市" |
|
| 3774 |
+ }, |
|
| 3775 |
+ "640100": {
|
|
| 3776 |
+ "640104": "兴庆区", |
|
| 3777 |
+ "640105": "西夏区", |
|
| 3778 |
+ "640106": "金凤区", |
|
| 3779 |
+ "640121": "永宁县", |
|
| 3780 |
+ "640122": "贺兰县", |
|
| 3781 |
+ "640181": "灵武市" |
|
| 3782 |
+ }, |
|
| 3783 |
+ "640200": {
|
|
| 3784 |
+ "640202": "大武口区", |
|
| 3785 |
+ "640205": "惠农区", |
|
| 3786 |
+ "640221": "平罗县" |
|
| 3787 |
+ }, |
|
| 3788 |
+ "640300": {
|
|
| 3789 |
+ "640302": "利通区", |
|
| 3790 |
+ "640303": "红寺堡区", |
|
| 3791 |
+ "640323": "盐池县", |
|
| 3792 |
+ "640324": "同心县", |
|
| 3793 |
+ "640381": "青铜峡市" |
|
| 3794 |
+ }, |
|
| 3795 |
+ "640400": {
|
|
| 3796 |
+ "640402": "原州区", |
|
| 3797 |
+ "640422": "西吉县", |
|
| 3798 |
+ "640423": "隆德县", |
|
| 3799 |
+ "640424": "泾源县", |
|
| 3800 |
+ "640425": "彭阳县" |
|
| 3801 |
+ }, |
|
| 3802 |
+ "640500": {
|
|
| 3803 |
+ "640502": "沙坡头区", |
|
| 3804 |
+ "640521": "中宁县", |
|
| 3805 |
+ "640522": "海原县" |
|
| 3806 |
+ }, |
|
| 3807 |
+ "650000": {
|
|
| 3808 |
+ "650100": "乌鲁木齐市", |
|
| 3809 |
+ "650200": "克拉玛依市", |
|
| 3810 |
+ "650400": "吐鲁番市", |
|
| 3811 |
+ "650500": "哈密市", |
|
| 3812 |
+ "652300": "昌吉回族自治州", |
|
| 3813 |
+ "652700": "博尔塔拉蒙古自治州", |
|
| 3814 |
+ "652800": "巴音郭楞蒙古自治州", |
|
| 3815 |
+ "652900": "阿克苏地区", |
|
| 3816 |
+ "653000": "克孜勒苏柯尔克孜自治州", |
|
| 3817 |
+ "653100": "喀什地区", |
|
| 3818 |
+ "653200": "和田地区", |
|
| 3819 |
+ "654000": "伊犁哈萨克自治州", |
|
| 3820 |
+ "654200": "塔城地区", |
|
| 3821 |
+ "654300": "阿勒泰地区", |
|
| 3822 |
+ "659001": "石河子市", |
|
| 3823 |
+ "659002": "阿拉尔市", |
|
| 3824 |
+ "659003": "图木舒克市", |
|
| 3825 |
+ "659004": "五家渠市", |
|
| 3826 |
+ "659006": "铁门关市" |
|
| 3827 |
+ }, |
|
| 3828 |
+ "650100": {
|
|
| 3829 |
+ "650102": "天山区", |
|
| 3830 |
+ "650103": "沙依巴克区", |
|
| 3831 |
+ "650104": "新市区", |
|
| 3832 |
+ "650105": "水磨沟区", |
|
| 3833 |
+ "650106": "头屯河区", |
|
| 3834 |
+ "650107": "达坂城区", |
|
| 3835 |
+ "650109": "米东区", |
|
| 3836 |
+ "650121": "乌鲁木齐县" |
|
| 3837 |
+ }, |
|
| 3838 |
+ "650200": {
|
|
| 3839 |
+ "650202": "独山子区", |
|
| 3840 |
+ "650203": "克拉玛依区", |
|
| 3841 |
+ "650204": "白碱滩区", |
|
| 3842 |
+ "650205": "乌尔禾区" |
|
| 3843 |
+ }, |
|
| 3844 |
+ "650400": {
|
|
| 3845 |
+ "650402": "高昌区", |
|
| 3846 |
+ "650421": "鄯善县", |
|
| 3847 |
+ "650422": "托克逊县" |
|
| 3848 |
+ }, |
|
| 3849 |
+ "650500": {
|
|
| 3850 |
+ "650502": "伊州区", |
|
| 3851 |
+ "650521": "巴里坤哈萨克自治县", |
|
| 3852 |
+ "650522": "伊吾县" |
|
| 3853 |
+ }, |
|
| 3854 |
+ "652300": {
|
|
| 3855 |
+ "652301": "昌吉市", |
|
| 3856 |
+ "652302": "阜康市", |
|
| 3857 |
+ "652323": "呼图壁县", |
|
| 3858 |
+ "652324": "玛纳斯县", |
|
| 3859 |
+ "652325": "奇台县", |
|
| 3860 |
+ "652327": "吉木萨尔县", |
|
| 3861 |
+ "652328": "木垒哈萨克自治县" |
|
| 3862 |
+ }, |
|
| 3863 |
+ "652700": {
|
|
| 3864 |
+ "652701": "博乐市", |
|
| 3865 |
+ "652702": "阿拉山口市", |
|
| 3866 |
+ "652722": "精河县", |
|
| 3867 |
+ "652723": "温泉县" |
|
| 3868 |
+ }, |
|
| 3869 |
+ "652800": {
|
|
| 3870 |
+ "652801": "库尔勒市", |
|
| 3871 |
+ "652822": "轮台县", |
|
| 3872 |
+ "652823": "尉犁县", |
|
| 3873 |
+ "652824": "若羌县", |
|
| 3874 |
+ "652825": "且末县", |
|
| 3875 |
+ "652826": "焉耆回族自治县", |
|
| 3876 |
+ "652827": "和静县", |
|
| 3877 |
+ "652828": "和硕县", |
|
| 3878 |
+ "652829": "博湖县" |
|
| 3879 |
+ }, |
|
| 3880 |
+ "652900": {
|
|
| 3881 |
+ "652901": "阿克苏市", |
|
| 3882 |
+ "652922": "温宿县", |
|
| 3883 |
+ "652923": "库车县", |
|
| 3884 |
+ "652924": "沙雅县", |
|
| 3885 |
+ "652925": "新和县", |
|
| 3886 |
+ "652926": "拜城县", |
|
| 3887 |
+ "652927": "乌什县", |
|
| 3888 |
+ "652928": "阿瓦提县", |
|
| 3889 |
+ "652929": "柯坪县" |
|
| 3890 |
+ }, |
|
| 3891 |
+ "653000": {
|
|
| 3892 |
+ "653001": "阿图什市", |
|
| 3893 |
+ "653022": "阿克陶县", |
|
| 3894 |
+ "653023": "阿合奇县", |
|
| 3895 |
+ "653024": "乌恰县" |
|
| 3896 |
+ }, |
|
| 3897 |
+ "653100": {
|
|
| 3898 |
+ "653101": "喀什市", |
|
| 3899 |
+ "653121": "疏附县", |
|
| 3900 |
+ "653122": "疏勒县", |
|
| 3901 |
+ "653123": "英吉沙县", |
|
| 3902 |
+ "653124": "泽普县", |
|
| 3903 |
+ "653125": "莎车县", |
|
| 3904 |
+ "653126": "叶城县", |
|
| 3905 |
+ "653127": "麦盖提县", |
|
| 3906 |
+ "653128": "岳普湖县", |
|
| 3907 |
+ "653129": "伽师县", |
|
| 3908 |
+ "653130": "巴楚县", |
|
| 3909 |
+ "653131": "塔什库尔干塔吉克自治县" |
|
| 3910 |
+ }, |
|
| 3911 |
+ "653200": {
|
|
| 3912 |
+ "653201": "和田市", |
|
| 3913 |
+ "653221": "和田县", |
|
| 3914 |
+ "653222": "墨玉县", |
|
| 3915 |
+ "653223": "皮山县", |
|
| 3916 |
+ "653224": "洛浦县", |
|
| 3917 |
+ "653225": "策勒县", |
|
| 3918 |
+ "653226": "于田县", |
|
| 3919 |
+ "653227": "民丰县" |
|
| 3920 |
+ }, |
|
| 3921 |
+ "654000": {
|
|
| 3922 |
+ "654002": "伊宁市", |
|
| 3923 |
+ "654003": "奎屯市", |
|
| 3924 |
+ "654004": "霍尔果斯市", |
|
| 3925 |
+ "654021": "伊宁县", |
|
| 3926 |
+ "654022": "察布查尔锡伯自治县", |
|
| 3927 |
+ "654023": "霍城县", |
|
| 3928 |
+ "654024": "巩留县", |
|
| 3929 |
+ "654025": "新源县", |
|
| 3930 |
+ "654026": "昭苏县", |
|
| 3931 |
+ "654027": "特克斯县", |
|
| 3932 |
+ "654028": "尼勒克县" |
|
| 3933 |
+ }, |
|
| 3934 |
+ "654200": {
|
|
| 3935 |
+ "654201": "塔城市", |
|
| 3936 |
+ "654202": "乌苏市", |
|
| 3937 |
+ "654221": "额敏县", |
|
| 3938 |
+ "654223": "沙湾县", |
|
| 3939 |
+ "654224": "托里县", |
|
| 3940 |
+ "654225": "裕民县", |
|
| 3941 |
+ "654226": "和布克赛尔蒙古自治县" |
|
| 3942 |
+ }, |
|
| 3943 |
+ "654300": {
|
|
| 3944 |
+ "654301": "阿勒泰市", |
|
| 3945 |
+ "654321": "布尔津县", |
|
| 3946 |
+ "654322": "富蕴县", |
|
| 3947 |
+ "654323": "福海县", |
|
| 3948 |
+ "654324": "哈巴河县", |
|
| 3949 |
+ "654325": "青河县", |
|
| 3950 |
+ "654326": "吉木乃县" |
|
| 3951 |
+ }, |
|
| 3952 |
+ "810000": {
|
|
| 3953 |
+ "810001": "中西區", |
|
| 3954 |
+ "810002": "灣仔區", |
|
| 3955 |
+ "810003": "東區", |
|
| 3956 |
+ "810004": "南區", |
|
| 3957 |
+ "810005": "油尖旺區", |
|
| 3958 |
+ "810006": "深水埗區", |
|
| 3959 |
+ "810007": "九龍城區", |
|
| 3960 |
+ "810008": "黃大仙區", |
|
| 3961 |
+ "810009": "觀塘區", |
|
| 3962 |
+ "810010": "荃灣區", |
|
| 3963 |
+ "810011": "屯門區", |
|
| 3964 |
+ "810012": "元朗區", |
|
| 3965 |
+ "810013": "北區", |
|
| 3966 |
+ "810014": "大埔區", |
|
| 3967 |
+ "810015": "西貢區", |
|
| 3968 |
+ "810016": "沙田區", |
|
| 3969 |
+ "810017": "葵青區", |
|
| 3970 |
+ "810018": "離島區" |
|
| 3971 |
+ }, |
|
| 3972 |
+ "820000": {
|
|
| 3973 |
+ "820001": "花地瑪堂區", |
|
| 3974 |
+ "820002": "花王堂區", |
|
| 3975 |
+ "820003": "望德堂區", |
|
| 3976 |
+ "820004": "大堂區", |
|
| 3977 |
+ "820005": "風順堂區", |
|
| 3978 |
+ "820006": "嘉模堂區", |
|
| 3979 |
+ "820007": "路氹填海區", |
|
| 3980 |
+ "820008": "聖方濟各堂區" |
|
| 3981 |
+ } |
|
| 3982 |
+} |
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.test import TestCase |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Create your tests here. |
@@ -0,0 +1,7 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.shortcuts import render |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+# Create your views here. |
@@ -0,0 +1,2 @@ |
||
| 1 |
+# 定时任务 |
|
| 2 |
+# m h dom mon dow command |
@@ -0,0 +1,3 @@ |
||
| 1 |
+#!/bin/bash |
|
| 2 |
+ |
|
| 3 |
+isort . |
@@ -0,0 +1,23 @@ |
||
| 1 |
+#!/usr/bin/env python |
|
| 2 |
+import os |
|
| 3 |
+import sys |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+if __name__ == "__main__": |
|
| 7 |
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "thermometer.settings")
|
|
| 8 |
+ try: |
|
| 9 |
+ from django.core.management import execute_from_command_line |
|
| 10 |
+ except ImportError: |
|
| 11 |
+ # The above import may fail for some other reason. Ensure that the |
|
| 12 |
+ # issue is really that Django is missing to avoid masking other |
|
| 13 |
+ # exceptions on Python 2. |
|
| 14 |
+ try: |
|
| 15 |
+ import django |
|
| 16 |
+ except ImportError: |
|
| 17 |
+ raise ImportError( |
|
| 18 |
+ "Couldn't import Django. Are you sure it's installed and " |
|
| 19 |
+ "available on your PYTHONPATH environment variable? Did you " |
|
| 20 |
+ "forget to activate a virtual environment?" |
|
| 21 |
+ ) |
|
| 22 |
+ raise |
|
| 23 |
+ execute_from_command_line(sys.argv) |
@@ -0,0 +1,10 @@ |
||
| 1 |
+#!/bin/bash |
|
| 2 |
+ |
|
| 3 |
+# Ignoring autogenerated files |
|
| 4 |
+# -- Migration directories |
|
| 5 |
+# Ignoring error codes |
|
| 6 |
+# -- E128 continuation line under-indented for visual indent |
|
| 7 |
+# -- E402 module level import not at top of file |
|
| 8 |
+# -- E501 line too long |
|
| 9 |
+ |
|
| 10 |
+pycodestyle --exclude=build,migrations,.tox --ignore=E128,E402,E501 . |
@@ -0,0 +1,8 @@ |
||
| 1 |
+StatusCode==1.0.0 |
|
| 2 |
+furl==2.1.2 |
|
| 3 |
+jsonfield==3.1.0 |
|
| 4 |
+mysqlclient==2.0.3 |
|
| 5 |
+rlog==0.3 |
|
| 6 |
+-r requirements_dj.txt |
|
| 7 |
+-r requirements_pywe.txt |
|
| 8 |
+-r requirements_redis.txt |
@@ -0,0 +1,3 @@ |
||
| 1 |
+ipdb==0.13.3 |
|
| 2 |
+ipython==7.18.1 |
|
| 3 |
+uwsgi==2.0.19.1 |
@@ -0,0 +1,2 @@ |
||
| 1 |
+isort==5.4.2 |
|
| 2 |
+pycodestyle==2.6.0 |
@@ -0,0 +1,15 @@ |
||
| 1 |
+Django==3.2.4 |
|
| 2 |
+django-admin==2.0.1 |
|
| 3 |
+django-detect==1.0.20 |
|
| 4 |
+django-file==1.0.4 |
|
| 5 |
+django-json-render==1.0.3 |
|
| 6 |
+django-json-response==1.1.5 |
|
| 7 |
+django-logit==1.1.3 |
|
| 8 |
+django-models-ext==1.1.10 |
|
| 9 |
+django-redis-connector==1.0.4 |
|
| 10 |
+django-response==1.1.1 |
|
| 11 |
+django-rlog==1.0.7 |
|
| 12 |
+django-short-url==1.1.6 |
|
| 13 |
+django-six==1.0.4 |
|
| 14 |
+django-uniapi==1.0.10 |
|
| 15 |
+django-we==1.5.6 |
@@ -0,0 +1,2 @@ |
||
| 1 |
+pywe-oauth==1.1.1 |
|
| 2 |
+pywe-pay==1.0.14 |
@@ -0,0 +1,3 @@ |
||
| 1 |
+hiredis==2.0.0 |
|
| 2 |
+redis==3.5.3 |
|
| 3 |
+redis-extensions==2.0.7 |
@@ -0,0 +1,4 @@ |
||
| 1 |
+#!/bin/bash |
|
| 2 |
+ |
|
| 3 |
+sudo sysctl -w net.core.somaxconn=65535 |
|
| 4 |
+sudo sysctl -w net.core.netdev_max_backlog=65535 |
@@ -0,0 +1,26 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from django.db import models |
|
| 4 |
+from django.utils.translation import ugettext_lazy as _ |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+class BaseModelMixin(models.Model): |
|
| 8 |
+ status = models.BooleanField(_(u'status'), default=True, help_text=_(u'状态')) |
|
| 9 |
+ created_at = models.DateTimeField(_(u'created_at'), auto_now_add=True, editable=True, help_text=_(u'创建时间')) |
|
| 10 |
+ updated_at = models.DateTimeField(_(u'updated_at'), auto_now=True, editable=True, help_text=_(u'更新时间')) |
|
| 11 |
+ |
|
| 12 |
+ class Meta: |
|
| 13 |
+ abstract = True |
|
| 14 |
+ |
|
| 15 |
+ |
|
| 16 |
+class SexChoicesMixin(models.Model): |
|
| 17 |
+ MALE = 1 |
|
| 18 |
+ FEMALE = 0 |
|
| 19 |
+ |
|
| 20 |
+ SEX_TYPE = ( |
|
| 21 |
+ (MALE, u'男'), |
|
| 22 |
+ (FEMALE, u'女'), |
|
| 23 |
+ ) |
|
| 24 |
+ |
|
| 25 |
+ class Meta: |
|
| 26 |
+ abstract = True |
@@ -0,0 +1,93 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from functools import wraps |
|
| 4 |
+ |
|
| 5 |
+from django.conf import settings |
|
| 6 |
+from django.shortcuts import redirect |
|
| 7 |
+from furl import furl |
|
| 8 |
+from pywe_oauth import get_oauth_redirect_url |
|
| 9 |
+from pywe_sign import check_signature |
|
| 10 |
+ |
|
| 11 |
+from utils.error.errno_utils import SignatureStatusCode |
|
| 12 |
+from utils.error.response_utils import response |
|
| 13 |
+from utils.redis.connect import r |
|
| 14 |
+ |
|
| 15 |
+ |
|
| 16 |
+def check_user_cookie(func=None, key=settings.COOKIE_USER_CHECK_KEY): |
|
| 17 |
+ def decorator(func): |
|
| 18 |
+ @wraps(func) |
|
| 19 |
+ def returned_wrapper(request, *args, **kwargs): |
|
| 20 |
+ user_id = request.get_signed_cookie(key, default='', salt=settings.COOKIE_SALT) |
|
| 21 |
+ if not user_id: |
|
| 22 |
+ return redirect(get_oauth_redirect_url(settings.WECHAT_OAUTH2_REDIRECT_URI, 'snsapi_userinfo', request.get_full_path())) |
|
| 23 |
+ return func(request, *args, **kwargs) |
|
| 24 |
+ return returned_wrapper |
|
| 25 |
+ |
|
| 26 |
+ if not func: |
|
| 27 |
+ def foo(func): |
|
| 28 |
+ return decorator(func) |
|
| 29 |
+ return foo |
|
| 30 |
+ |
|
| 31 |
+ return decorator(func) |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+def check_token(func=None, entry=None): |
|
| 35 |
+ def decorator(func): |
|
| 36 |
+ @wraps(func) |
|
| 37 |
+ def returned_wrapper(request, *args, **kwargs): |
|
| 38 |
+ if not settings.DEBUG and request.wechat: |
|
| 39 |
+ vtoken = request.GET.get('vtoken', '') or request.POST.get('vtoken', '')
|
|
| 40 |
+ token_check_key = request.GET.get(settings.TOKEN_CHECK_KEY, '') or request.POST.get(settings.TOKEN_CHECK_KEY, '') |
|
| 41 |
+ if not r.token_exists(token_check_key, vtoken): |
|
| 42 |
+ # 3rd OAuth |
|
| 43 |
+ # return redirect(settings.WECHAT_OAUTH2_REDIRECT_URL) |
|
| 44 |
+ # Current OAuth |
|
| 45 |
+ redirect_url = furl(entry or settings.WECHAT_OAUTH2_REDIRECT_ENTRY).add({}).url
|
|
| 46 |
+ return redirect(get_oauth_redirect_url(settings.WECHAT_OAUTH2_REDIRECT_URI, 'snsapi_userinfo', redirect_url)) |
|
| 47 |
+ return func(request, *args, **kwargs) |
|
| 48 |
+ return returned_wrapper |
|
| 49 |
+ |
|
| 50 |
+ if not func: |
|
| 51 |
+ def foo(func): |
|
| 52 |
+ return decorator(func) |
|
| 53 |
+ return foo |
|
| 54 |
+ |
|
| 55 |
+ return decorator(func) |
|
| 56 |
+ |
|
| 57 |
+ |
|
| 58 |
+def check_sign(func=None, method='POST'): |
|
| 59 |
+ def decorator(func): |
|
| 60 |
+ @wraps(func) |
|
| 61 |
+ def returned_wrapper(request, *args, **kwargs): |
|
| 62 |
+ if not settings.DEBUG and not check_signature(getattr(request, method).dict(), settings.PARAMS_SIGN_KEY): |
|
| 63 |
+ return response(SignatureStatusCode.SIGNATURE_ERROR) |
|
| 64 |
+ return func(request, *args, **kwargs) |
|
| 65 |
+ return returned_wrapper |
|
| 66 |
+ |
|
| 67 |
+ if not func: |
|
| 68 |
+ def foo(func): |
|
| 69 |
+ return decorator(func) |
|
| 70 |
+ return foo |
|
| 71 |
+ |
|
| 72 |
+ return decorator(func) |
|
| 73 |
+ |
|
| 74 |
+ |
|
| 75 |
+def check_cookie(func=None, entry=None): |
|
| 76 |
+ def decorator(func): |
|
| 77 |
+ @wraps(func) |
|
| 78 |
+ def returned_wrapper(request, *args, **kwargs): |
|
| 79 |
+ if not settings.DEBUG and not request.COOKIES.get('user_id'):
|
|
| 80 |
+ # 3rd OAuth |
|
| 81 |
+ # return redirect(settings.WECHAT_OAUTH2_REDIRECT_URL) |
|
| 82 |
+ # Current OAuth |
|
| 83 |
+ redirect_url = furl(entry or settings.WECHAT_OAUTH2_REDIRECT_ENTRY).add({}).url
|
|
| 84 |
+ return redirect(get_oauth_redirect_url(settings.WECHAT_OAUTH2_REDIRECT_URI, 'snsapi_userinfo', redirect_url)) |
|
| 85 |
+ return func(request, *args, **kwargs) |
|
| 86 |
+ return returned_wrapper |
|
| 87 |
+ |
|
| 88 |
+ if not func: |
|
| 89 |
+ def foo(func): |
|
| 90 |
+ return decorator(func) |
|
| 91 |
+ return foo |
|
| 92 |
+ |
|
| 93 |
+ return decorator(func) |
@@ -0,0 +1,12 @@ |
||
| 1 |
+[program:pollqueue] |
|
| 2 |
+command=/home/diors/env/bin/python /home/diors/work/thermometer/manage.py poll_queue |
|
| 3 |
+autostart=true |
|
| 4 |
+autorestart=true |
|
| 5 |
+startretries=3 |
|
| 6 |
+exitcodes=0,1,2 |
|
| 7 |
+stopsignal=KILL |
|
| 8 |
+stopasgroup=true |
|
| 9 |
+killasgroup=true |
|
| 10 |
+stdout_logfile=/var/log/supervisor_pollqueue_access.log |
|
| 11 |
+stderr_logfile=/var/log/supervisor_pollqueue_error.log |
|
| 12 |
+user=diors |
@@ -0,0 +1,12 @@ |
||
| 1 |
+[program:rlistlog] |
|
| 2 |
+command=/home/diors/env/bin/python /home/diors/work/thermometer/manage.py rlistlog --key=django:logit:thermometer --filename=/tmp/thermometer.logit.log |
|
| 3 |
+autostart=true |
|
| 4 |
+autorestart=true |
|
| 5 |
+startretries=3 |
|
| 6 |
+exitcodes=0,1,2 |
|
| 7 |
+stopsignal=KILL |
|
| 8 |
+stopasgroup=true |
|
| 9 |
+killasgroup=true |
|
| 10 |
+stdout_logfile=/var/log/supervisor_rlistlog_access.log |
|
| 11 |
+stderr_logfile=/var/log/supervisor_rlistlog_error.log |
|
| 12 |
+user=diors |
@@ -0,0 +1,35 @@ |
||
| 1 |
+# Refer: https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html |
|
| 2 |
+# thermometer_uwsgi.ini file |
|
| 3 |
+[uwsgi] |
|
| 4 |
+ |
|
| 5 |
+# Django-related settings |
|
| 6 |
+# the base directory (full path) |
|
| 7 |
+chdir = /home/diors/work/thermometer |
|
| 8 |
+# Django's wsgi file |
|
| 9 |
+module = thermometer.wsgi |
|
| 10 |
+# the virtualenv (full path) |
|
| 11 |
+# home = /path/to/virtualenv |
|
| 12 |
+ |
|
| 13 |
+# process-related settings |
|
| 14 |
+# master |
|
| 15 |
+master = true |
|
| 16 |
+# maximum number of worker processes |
|
| 17 |
+processes = 10 |
|
| 18 |
+# the socket (use the full path to be safe |
|
| 19 |
+socket = /home/diors/work/thermometer/thermometer/deploy/thermometer.sock |
|
| 20 |
+# ... with appropriate permissions - may be needed |
|
| 21 |
+chmod-socket = 777 |
|
| 22 |
+# clear environment on exit |
|
| 23 |
+vacuum = true |
|
| 24 |
+ |
|
| 25 |
+# connect() to unix:///home/xxx/xxx.sock failed (11: Resource temporarily unavailable) while connecting to upstream |
|
| 26 |
+# Exec sysctl.sh first |
|
| 27 |
+# #!/bin/bash |
|
| 28 |
+# sudo sysctl -w net.core.somaxconn=65535 |
|
| 29 |
+# sudo sysctl -w net.core.netdev_max_backlog=65535 |
|
| 30 |
+reload-mercy = 64 |
|
| 31 |
+max-requests = 8192 |
|
| 32 |
+listen = 8192 |
|
| 33 |
+ |
|
| 34 |
+# recv() failed (104: Connection reset by peer) while reading response header from upstream |
|
| 35 |
+buffer-size = 65535 |
@@ -0,0 +1,35 @@ |
||
| 1 |
+# Refer: https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html |
|
| 2 |
+# thermometer_uwsgi.ini file |
|
| 3 |
+[uwsgi] |
|
| 4 |
+ |
|
| 5 |
+# Django-related settings |
|
| 6 |
+# the base directory (full path) |
|
| 7 |
+chdir = /home/diors/work/thermometer |
|
| 8 |
+# Django's wsgi file |
|
| 9 |
+module = thermometer.wsgi |
|
| 10 |
+# the virtualenv (full path) |
|
| 11 |
+# home = /path/to/virtualenv |
|
| 12 |
+ |
|
| 13 |
+# process-related settings |
|
| 14 |
+# master |
|
| 15 |
+master = true |
|
| 16 |
+# maximum number of worker processes |
|
| 17 |
+processes = 10 |
|
| 18 |
+# the socket (use the full path to be safe |
|
| 19 |
+socket = /home/diors/work/thermometer/thermometer/deploy/thermometer2.sock |
|
| 20 |
+# ... with appropriate permissions - may be needed |
|
| 21 |
+chmod-socket = 777 |
|
| 22 |
+# clear environment on exit |
|
| 23 |
+vacuum = true |
|
| 24 |
+ |
|
| 25 |
+# connect() to unix:///home/xxx/xxx.sock failed (11: Resource temporarily unavailable) while connecting to upstream |
|
| 26 |
+# Exec sysctl.sh first |
|
| 27 |
+# #!/bin/bash |
|
| 28 |
+# sudo sysctl -w net.core.somaxconn=65535 |
|
| 29 |
+# sudo sysctl -w net.core.netdev_max_backlog=65535 |
|
| 30 |
+reload-mercy = 64 |
|
| 31 |
+max-requests = 8192 |
|
| 32 |
+listen = 8192 |
|
| 33 |
+ |
|
| 34 |
+# recv() failed (104: Connection reset by peer) while reading response header from upstream |
|
| 35 |
+buffer-size = 65535 |
@@ -0,0 +1,96 @@ |
||
| 1 |
+# thermometer_nginx.conf |
|
| 2 |
+ |
|
| 3 |
+# the upstream component nginx needs to connect to |
|
| 4 |
+upstream thermometer {
|
|
| 5 |
+ # Single Server |
|
| 6 |
+ # server unix:///home/diors/work/thermometer/thermometer/deploy/thermometer.sock; # for a file socket |
|
| 7 |
+ # Multi Server |
|
| 8 |
+ # server unix:///home/diors/work/thermometer/thermometer/deploy/thermometer.sock max_fails=0 weight=1; # for a file socket |
|
| 9 |
+ # server unix:///home/diors/work/thermometer/thermometer/deploy/thermometer2.sock max_fails=0 weight=1; # for a file socket |
|
| 10 |
+ server 127.0.0.1:8888; # for a web port socket (we'll use this first) |
|
| 11 |
+} |
|
| 12 |
+ |
|
| 13 |
+# configuration of the server |
|
| 14 |
+server {
|
|
| 15 |
+ # the port your site will be served on |
|
| 16 |
+ listen 80; |
|
| 17 |
+ # the domain name it will serve for |
|
| 18 |
+ server_name .a.com; # substitute your machine's IP address or FQDN |
|
| 19 |
+ charset utf-8; |
|
| 20 |
+ |
|
| 21 |
+ # access_log off; # 设置是否存储访问日志 |
|
| 22 |
+ # access_log /var/log/nginx/thermometer_access.log; |
|
| 23 |
+ # error_log /var/log/nginx/thermometer_error.log; |
|
| 24 |
+ |
|
| 25 |
+ # max upload size |
|
| 26 |
+ client_max_body_size 75M; # adjust to taste |
|
| 27 |
+ |
|
| 28 |
+ # JS接口安全域名 & 业务域名 验证 |
|
| 29 |
+ location /xxx.txt {
|
|
| 30 |
+ alias /home/diors/work/thermometer/docs/we/xxx.txt; |
|
| 31 |
+ } |
|
| 32 |
+ |
|
| 33 |
+ # Django media |
|
| 34 |
+ location /media {
|
|
| 35 |
+ alias /home/diors/work/thermometer/media; # your Django project's media files - amend as required |
|
| 36 |
+ } |
|
| 37 |
+ |
|
| 38 |
+ location /static {
|
|
| 39 |
+ alias /home/diors/work/thermometer/collect_static; # your Django project's static files - amend as required |
|
| 40 |
+ } |
|
| 41 |
+ |
|
| 42 |
+ # Finally, send all non-media requests to the Django server. |
|
| 43 |
+ location / {
|
|
| 44 |
+ # uwsgi_pass thermometer; |
|
| 45 |
+ proxy_pass http://thermometer; |
|
| 46 |
+ include /home/diors/work/thermometer/thermometer/deploy/uwsgi_params; # the uwsgi_params file you installed |
|
| 47 |
+ } |
|
| 48 |
+} |
|
| 49 |
+ |
|
| 50 |
+# configuration of the server |
|
| 51 |
+server {
|
|
| 52 |
+ # the port your site will be served on |
|
| 53 |
+ listen 443; |
|
| 54 |
+ # the domain name it will serve for |
|
| 55 |
+ server_name .a.com; # substitute your machine's IP address or FQDN |
|
| 56 |
+ charset utf-8; |
|
| 57 |
+ |
|
| 58 |
+ # access_log /var/log/nginx/thermometer_ssl_access.log; |
|
| 59 |
+ # error_log /var/log/nginx/thermometer_ssl_error.log; |
|
| 60 |
+ |
|
| 61 |
+ ssl on; |
|
| 62 |
+ ssl_certificate cert/214180103970874.pem; |
|
| 63 |
+ ssl_certificate_key cert/214180103970874.key; |
|
| 64 |
+ ssl_session_timeout 5m; |
|
| 65 |
+ # worker process * exited on signal 11 |
|
| 66 |
+ # 同一台服务器部署多个 SSL 转发,Nginx 默认是开启 Session 缓存的,导致冲突,验证不通过,连接直接退出 |
|
| 67 |
+ # 解决方案:禁用 Ningx SSL Session 的缓存 |
|
| 68 |
+ ssl_session_cache none; |
|
| 69 |
+ ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; |
|
| 70 |
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
|
| 71 |
+ ssl_prefer_server_ciphers on; |
|
| 72 |
+ |
|
| 73 |
+ # max upload size |
|
| 74 |
+ client_max_body_size 75M; # adjust to taste |
|
| 75 |
+ |
|
| 76 |
+ # JS接口安全域名 & 业务域名 验证 |
|
| 77 |
+ location /xxx.txt {
|
|
| 78 |
+ alias /home/diors/work/thermometer/docs/we/xxx.txt; |
|
| 79 |
+ } |
|
| 80 |
+ |
|
| 81 |
+ # Django media |
|
| 82 |
+ location /media {
|
|
| 83 |
+ alias /home/diors/work/thermometer/media; # your Django project's media files - amend as required |
|
| 84 |
+ } |
|
| 85 |
+ |
|
| 86 |
+ location /static {
|
|
| 87 |
+ alias /home/diors/work/thermometer/collect_static; # your Django project's static files - amend as required |
|
| 88 |
+ } |
|
| 89 |
+ |
|
| 90 |
+ # Finally, send all non-media requests to the Django server. |
|
| 91 |
+ location / {
|
|
| 92 |
+ # uwsgi_pass thermometer; |
|
| 93 |
+ proxy_pass http://thermometer; |
|
| 94 |
+ include /home/diors/work/thermometer/thermometer/deploy/uwsgi_params; # the uwsgi_params file you installed |
|
| 95 |
+ } |
|
| 96 |
+} |
@@ -0,0 +1,12 @@ |
||
| 1 |
+[program:thermometer] |
|
| 2 |
+command=/home/diors/env/bin/uwsgi --ini /home/diors/work/thermometer/thermometer/deploy/thermometer.ini |
|
| 3 |
+autostart=true |
|
| 4 |
+autorestart=true |
|
| 5 |
+startretries=3 |
|
| 6 |
+exitcodes=0,1,2 |
|
| 7 |
+stopsignal=KILL |
|
| 8 |
+stopasgroup=true |
|
| 9 |
+killasgroup=true |
|
| 10 |
+stdout_logfile=/var/log/supervisor_thermometer_access.log |
|
| 11 |
+stderr_logfile=/var/log/supervisor_thermometer_error.log |
|
| 12 |
+user=diors |
@@ -0,0 +1,12 @@ |
||
| 1 |
+[program:thermometer2] |
|
| 2 |
+command=/home/diors/env/bin/uwsgi --ini /home/diors/work/thermometer/thermometer/deploy/thermometer2.ini |
|
| 3 |
+autostart=true |
|
| 4 |
+autorestart=true |
|
| 5 |
+startretries=3 |
|
| 6 |
+exitcodes=0,1,2 |
|
| 7 |
+stopsignal=KILL |
|
| 8 |
+stopasgroup=true |
|
| 9 |
+killasgroup=true |
|
| 10 |
+stdout_logfile=/var/log/supervisor_thermometer2_access.log |
|
| 11 |
+stderr_logfile=/var/log/supervisor_thermometer2_error.log |
|
| 12 |
+user=diors |
@@ -0,0 +1,15 @@ |
||
| 1 |
+uwsgi_param QUERY_STRING $query_string; |
|
| 2 |
+uwsgi_param REQUEST_METHOD $request_method; |
|
| 3 |
+uwsgi_param CONTENT_TYPE $content_type; |
|
| 4 |
+uwsgi_param CONTENT_LENGTH $content_length; |
|
| 5 |
+ |
|
| 6 |
+uwsgi_param REQUEST_URI $request_uri; |
|
| 7 |
+uwsgi_param PATH_INFO $document_uri; |
|
| 8 |
+uwsgi_param DOCUMENT_ROOT $document_root; |
|
| 9 |
+uwsgi_param SERVER_PROTOCOL $server_protocol; |
|
| 10 |
+uwsgi_param UWSGI_SCHEME $scheme; |
|
| 11 |
+ |
|
| 12 |
+uwsgi_param REMOTE_ADDR $remote_addr; |
|
| 13 |
+uwsgi_param REMOTE_PORT $remote_port; |
|
| 14 |
+uwsgi_param SERVER_PORT $server_port; |
|
| 15 |
+uwsgi_param SERVER_NAME $server_name; |
@@ -0,0 +1,5 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
|
| 5 |
+ """ DJANGO FILE UPLOAD Callback Func """ |
@@ -0,0 +1,84 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+def DJANGO_WE_CFG_FUNC(request, state=None): |
|
| 5 |
+ """ WeChat CFG Callback Func """ |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+def DJANGO_WE_QUOTE_STATE_FUNC(request, state): |
|
| 9 |
+ """ WeChat Quote Callback Func """ |
|
| 10 |
+ from utils.redis.connect import r |
|
| 11 |
+ return r.quote(state, short_uuid=True) |
|
| 12 |
+ |
|
| 13 |
+ |
|
| 14 |
+def DJANGO_WE_UNQUOTE_STATE_FUNC(request, state): |
|
| 15 |
+ """ WeChat UnQuote Callback Func """ |
|
| 16 |
+ from utils.redis.connect import r |
|
| 17 |
+ |
|
| 18 |
+ # If Not Buf, When Wechat Multi Request, Unquote Will Get None |
|
| 19 |
+ # Then Once Should ReOAuth, Will Raise Error |
|
| 20 |
+ return r.unquote(state, buf=True) or state |
|
| 21 |
+ |
|
| 22 |
+ |
|
| 23 |
+def DJANGO_WE_BASE_FUNC(code, state, access_info=None): |
|
| 24 |
+ """ WeChat Base Redirect Callback Func """ |
|
| 25 |
+ |
|
| 26 |
+ |
|
| 27 |
+def DJANGO_WE_BASE_COOKIE_FUNC(code, state, access_info=None): |
|
| 28 |
+ """ WeChat Base Set Cookie Redirect Callback Func """ |
|
| 29 |
+ |
|
| 30 |
+ |
|
| 31 |
+def DJANGO_WE_USERINFO_FUNC(code, state, access_info=None, userinfo=None): |
|
| 32 |
+ """ WeChat Userinfo Redirect Callback Func """ |
|
| 33 |
+ from django.conf import settings |
|
| 34 |
+ |
|
| 35 |
+ from utils.redis.connect import r |
|
| 36 |
+ from utils.user.userinfo_save import userinfo_save |
|
| 37 |
+ |
|
| 38 |
+ # Save profile or something else |
|
| 39 |
+ user = userinfo_save(userinfo) |
|
| 40 |
+ |
|
| 41 |
+ token_check_key = getattr(user, settings.TOKEN_CHECK_KEY) |
|
| 42 |
+ |
|
| 43 |
+ return {
|
|
| 44 |
+ settings.TOKEN_CHECK_KEY: token_check_key, |
|
| 45 |
+ 'vtoken': r.token(token_check_key, ex=True, time=r.REDIS_EXPIRED_ONE_DAY, buf=False, short_uuid=True), |
|
| 46 |
+ } |
|
| 47 |
+ |
|
| 48 |
+ |
|
| 49 |
+def DJANGO_WE_USERINFO_COOKIE_FUNC(code, state, access_info=None, userinfo=None): |
|
| 50 |
+ """ WeChat Userinfo Set Cookie Redirect Callback Func """ |
|
| 51 |
+ from django.conf import settings |
|
| 52 |
+ |
|
| 53 |
+ from utils.user.userinfo_save import userinfo_save |
|
| 54 |
+ |
|
| 55 |
+ # Save profile or something else |
|
| 56 |
+ user = userinfo_save(userinfo) |
|
| 57 |
+ |
|
| 58 |
+ token_check_key = getattr(user, settings.TOKEN_CHECK_KEY) |
|
| 59 |
+ |
|
| 60 |
+ return {}, settings.TOKEN_CHECK_KEY, token_check_key
|
|
| 61 |
+ |
|
| 62 |
+ |
|
| 63 |
+def DJANGO_WE_SHARE_FUNC(request, state=None): |
|
| 64 |
+ """ WeChat Share Callback Func """ |
|
| 65 |
+ # from django.conf import settings |
|
| 66 |
+ # return settings.WECHAT_OAUTH2_REDIRECT_URL |
|
| 67 |
+ |
|
| 68 |
+ |
|
| 69 |
+def DJANGO_WE_MESSAGE_CALLBACK_FUNC(request, xmldict, decrypted): |
|
| 70 |
+ """ WeChat Message Callback Func """ |
|
| 71 |
+ |
|
| 72 |
+ |
|
| 73 |
+def DJANGO_WE_COMPONENT_AUTH_FUNC(request, xmldict, decrypted): |
|
| 74 |
+ """ WeChat COMPONENT Auth Func """ |
|
| 75 |
+ |
|
| 76 |
+ |
|
| 77 |
+def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, xmldict, decrypted): |
|
| 78 |
+ """ WeChat COMPONENT Callback Func """ |
|
| 79 |
+ |
|
| 80 |
+ |
|
| 81 |
+def DJANGO_WE_REDIS_OBJ_FUNC(request): |
|
| 82 |
+ """ WeChat Redis Object Callback Func """ |
|
| 83 |
+ from utils.redis.connect import r |
|
| 84 |
+ return r |
@@ -0,0 +1,16 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+import redis_extensions as redis |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+def redis_conf(conf): |
|
| 7 |
+ return {
|
|
| 8 |
+ 'host': conf.get('HOST', 'localhost'),
|
|
| 9 |
+ 'port': conf.get('PORT', 6379),
|
|
| 10 |
+ 'password': '{0}:{1}'.format(conf.get('USER', ''), conf.get('PASSWORD', '')) if conf.get('USER') else '',
|
|
| 11 |
+ 'db': conf.get('db', 0),
|
|
| 12 |
+ } |
|
| 13 |
+ |
|
| 14 |
+ |
|
| 15 |
+def redis_connect(conf): |
|
| 16 |
+ return redis.StrictRedisExtensions(connection_pool=redis.ConnectionPool(**redis_conf(conf))) |
@@ -0,0 +1,17 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+# DEBUG = False |
|
| 4 |
+ |
|
| 5 |
+ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'thermometer'] |
|
| 6 |
+ |
|
| 7 |
+# DOMAIN |
|
| 8 |
+DOMAIN = 'http://a.com' |
|
| 9 |
+ |
|
| 10 |
+# 邮件设置 |
|
| 11 |
+# 只有当 DEBUG = False 的时候,才会邮件发送报错信息 |
|
| 12 |
+SERVER_EMAIL = 'error.notify@exmail.com' |
|
| 13 |
+EMAIL_HOST_USER = 'error.notify@exmail.com' |
|
| 14 |
+EMAIL_HOST_PASSWORD = '<^_^>pwd<^_^>' |
|
| 15 |
+DEFAULT_FROM_EMAIL = 'error.notify <error.notify@exmail.com>' |
|
| 16 |
+ADMINS = [('Zhang San', 'san.zhang@exmail.com'), ('Li Si', 'si.li@exmail.com')]
|
|
| 17 |
+EMAIL_SUBJECT_PREFIX = u'[Thermometer] ' |
@@ -0,0 +1,27 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+import os |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
|
| 7 |
+PROJ_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__))) |
|
| 8 |
+ |
|
| 9 |
+TEMPLATES = [ |
|
| 10 |
+ {
|
|
| 11 |
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates', |
|
| 12 |
+ 'DIRS': [os.path.join(BASE_DIR, 'templates')], |
|
| 13 |
+ # 'APP_DIRS': True, |
|
| 14 |
+ 'OPTIONS': {
|
|
| 15 |
+ 'context_processors': [ |
|
| 16 |
+ 'django.template.context_processors.debug', |
|
| 17 |
+ 'django.template.context_processors.request', |
|
| 18 |
+ 'django.contrib.auth.context_processors.auth', |
|
| 19 |
+ 'django.contrib.messages.context_processors.messages', |
|
| 20 |
+ ], |
|
| 21 |
+ 'loaders': [ |
|
| 22 |
+ 'django.template.loaders.filesystem.Loader', |
|
| 23 |
+ 'django.template.loaders.app_directories.Loader', |
|
| 24 |
+ ], |
|
| 25 |
+ }, |
|
| 26 |
+ }, |
|
| 27 |
+] |
@@ -0,0 +1,397 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+""" |
|
| 4 |
+Django settings for thermometer project. |
|
| 5 |
+ |
|
| 6 |
+Generated by 'django-admin startproject' using Django 1.11.3. |
|
| 7 |
+ |
|
| 8 |
+For more information on this file, see |
|
| 9 |
+https://docs.djangoproject.com/en/1.11/topics/settings/ |
|
| 10 |
+ |
|
| 11 |
+For the full list of settings and their values, see |
|
| 12 |
+https://docs.djangoproject.com/en/1.11/ref/settings/ |
|
| 13 |
+""" |
|
| 14 |
+ |
|
| 15 |
+import os |
|
| 16 |
+ |
|
| 17 |
+# try: |
|
| 18 |
+# from func_settings import redis_connect |
|
| 19 |
+# REDIS_CACHE = redis_connect(REDIS.get('default', {}))
|
|
| 20 |
+# except ImportError: |
|
| 21 |
+# REDIS_CACHE = None |
|
| 22 |
+from django_redis_connector import connector |
|
| 23 |
+ |
|
| 24 |
+ |
|
| 25 |
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...) |
|
| 26 |
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
|
| 27 |
+PROJ_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__))) |
|
| 28 |
+ |
|
| 29 |
+ |
|
| 30 |
+# Quick-start development settings - unsuitable for production |
|
| 31 |
+# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ |
|
| 32 |
+ |
|
| 33 |
+# SECURITY WARNING: keep the secret key used in production secret! |
|
| 34 |
+SECRET_KEY = '0=hpv21&am(7(k5ab!^zjvvl=ntj)^i@7)87t47uzumt_5rq$+' |
|
| 35 |
+ |
|
| 36 |
+# SECURITY WARNING: don't run with debug turned on in production! |
|
| 37 |
+DEBUG = True |
|
| 38 |
+ |
|
| 39 |
+ALLOWED_HOSTS = [] |
|
| 40 |
+ |
|
| 41 |
+ |
|
| 42 |
+# Application definition |
|
| 43 |
+ |
|
| 44 |
+INSTALLED_APPS = [ |
|
| 45 |
+ 'django.contrib.admin', |
|
| 46 |
+ 'django.contrib.auth', |
|
| 47 |
+ 'django.contrib.contenttypes', |
|
| 48 |
+ 'django.contrib.sessions', |
|
| 49 |
+ 'django.contrib.messages', |
|
| 50 |
+ 'django.contrib.staticfiles', |
|
| 51 |
+ # 'django_file_upload', |
|
| 52 |
+ # 'django_short_url', |
|
| 53 |
+ 'django_uniapi', |
|
| 54 |
+ 'django_admin', |
|
| 55 |
+ 'django_we', |
|
| 56 |
+ 'commands', |
|
| 57 |
+ 'api', |
|
| 58 |
+] |
|
| 59 |
+ |
|
| 60 |
+MIDDLEWARE = [ |
|
| 61 |
+ 'django.middleware.security.SecurityMiddleware', |
|
| 62 |
+ 'django.contrib.sessions.middleware.SessionMiddleware', |
|
| 63 |
+ 'django.middleware.common.CommonMiddleware', |
|
| 64 |
+ # 'django.middleware.csrf.CsrfViewMiddleware', |
|
| 65 |
+ 'django.contrib.auth.middleware.AuthenticationMiddleware', |
|
| 66 |
+ 'django.contrib.messages.middleware.MessageMiddleware', |
|
| 67 |
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware', |
|
| 68 |
+ 'detect.middleware.UserAgentDetectionMiddleware', |
|
| 69 |
+] |
|
| 70 |
+ |
|
| 71 |
+ROOT_URLCONF = 'thermometer.urls' |
|
| 72 |
+ |
|
| 73 |
+TEMPLATES = [ |
|
| 74 |
+ {
|
|
| 75 |
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates', |
|
| 76 |
+ 'DIRS': [os.path.join(BASE_DIR, 'templates')], |
|
| 77 |
+ # 'APP_DIRS': True, |
|
| 78 |
+ 'OPTIONS': {
|
|
| 79 |
+ 'context_processors': [ |
|
| 80 |
+ 'django.template.context_processors.debug', |
|
| 81 |
+ 'django.template.context_processors.request', |
|
| 82 |
+ 'django.contrib.auth.context_processors.auth', |
|
| 83 |
+ 'django.contrib.messages.context_processors.messages', |
|
| 84 |
+ ], |
|
| 85 |
+ 'loaders': [ |
|
| 86 |
+ ('django.template.loaders.cached.Loader', [
|
|
| 87 |
+ 'django.template.loaders.filesystem.Loader', |
|
| 88 |
+ 'django.template.loaders.app_directories.Loader', |
|
| 89 |
+ ]), |
|
| 90 |
+ ], |
|
| 91 |
+ }, |
|
| 92 |
+ }, |
|
| 93 |
+] |
|
| 94 |
+ |
|
| 95 |
+WSGI_APPLICATION = 'thermometer.wsgi.application' |
|
| 96 |
+ |
|
| 97 |
+ |
|
| 98 |
+# Database |
|
| 99 |
+# https://docs.djangoproject.com/en/1.11/ref/settings/#databases |
|
| 100 |
+ |
|
| 101 |
+DATABASES = {
|
|
| 102 |
+ # Create Database |
|
| 103 |
+ # CREATE DATABASE thermometer DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
|
| 104 |
+ 'default': {
|
|
| 105 |
+ 'ENGINE': 'django.db.backends.mysql', |
|
| 106 |
+ 'NAME': 'thermometer', |
|
| 107 |
+ 'USER': 'root', |
|
| 108 |
+ 'PASSWORD': '', |
|
| 109 |
+ 'HOST': '127.0.0.1', |
|
| 110 |
+ 'PORT': 3306, |
|
| 111 |
+ 'CONN_MAX_AGE': 600, |
|
| 112 |
+ 'OPTIONS': {
|
|
| 113 |
+ 'charset': 'utf8mb4', |
|
| 114 |
+ }, |
|
| 115 |
+ } |
|
| 116 |
+} |
|
| 117 |
+ |
|
| 118 |
+ |
|
| 119 |
+# Password validation |
|
| 120 |
+# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators |
|
| 121 |
+ |
|
| 122 |
+AUTH_PASSWORD_VALIDATORS = [ |
|
| 123 |
+ {
|
|
| 124 |
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', |
|
| 125 |
+ }, |
|
| 126 |
+ {
|
|
| 127 |
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', |
|
| 128 |
+ }, |
|
| 129 |
+ {
|
|
| 130 |
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', |
|
| 131 |
+ }, |
|
| 132 |
+ {
|
|
| 133 |
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', |
|
| 134 |
+ }, |
|
| 135 |
+] |
|
| 136 |
+ |
|
| 137 |
+ |
|
| 138 |
+# Internationalization |
|
| 139 |
+# https://docs.djangoproject.com/en/1.11/topics/i18n/ |
|
| 140 |
+ |
|
| 141 |
+LANGUAGE_CODE = 'zh-Hans' |
|
| 142 |
+ |
|
| 143 |
+TIME_ZONE = 'Asia/Shanghai' |
|
| 144 |
+ |
|
| 145 |
+USE_I18N = True |
|
| 146 |
+ |
|
| 147 |
+USE_L10N = True |
|
| 148 |
+ |
|
| 149 |
+USE_TZ = True |
|
| 150 |
+ |
|
| 151 |
+ |
|
| 152 |
+# Static files (CSS, JavaScript, Images) |
|
| 153 |
+# https://docs.djangoproject.com/en/1.11/howto/static-files/ |
|
| 154 |
+ |
|
| 155 |
+STATICFILES_DIRS = ( |
|
| 156 |
+ os.path.join(PROJ_DIR, 'static').replace('\\', '/'),
|
|
| 157 |
+) |
|
| 158 |
+ |
|
| 159 |
+STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static').replace('\\', '/')
|
|
| 160 |
+ |
|
| 161 |
+STATIC_URL = '/static/' |
|
| 162 |
+ |
|
| 163 |
+STATICFILES_FINDERS = ( |
|
| 164 |
+ 'django.contrib.staticfiles.finders.FileSystemFinder', |
|
| 165 |
+ 'django.contrib.staticfiles.finders.AppDirectoriesFinder', |
|
| 166 |
+ # 'django.contrib.staticfiles.finders.DefaultStorageFinder', |
|
| 167 |
+) |
|
| 168 |
+ |
|
| 169 |
+MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
|
|
| 170 |
+ |
|
| 171 |
+MEDIA_URL = '/media/' |
|
| 172 |
+ |
|
| 173 |
+# File 设置 |
|
| 174 |
+FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880 # InMemoryUploadedFile 文件最大值,设置为 5 MB |
|
| 175 |
+FILE_UPLOAD_PERMISSIONS = 0o644 # TemporaryUploadedFile 文件权限设置 |
|
| 176 |
+ |
|
| 177 |
+# DOMAIN |
|
| 178 |
+DOMAIN = 'http://a.com' |
|
| 179 |
+ |
|
| 180 |
+# Redis 设置 |
|
| 181 |
+REDIS = {
|
|
| 182 |
+ 'default': {
|
|
| 183 |
+ 'HOST': '127.0.0.1', |
|
| 184 |
+ 'PORT': 6379, |
|
| 185 |
+ 'USER': '', |
|
| 186 |
+ 'PASSWORD': '', |
|
| 187 |
+ 'db': 0, |
|
| 188 |
+ 'decode_responses': True, |
|
| 189 |
+ } |
|
| 190 |
+} |
|
| 191 |
+ |
|
| 192 |
+# 微信设置 |
|
| 193 |
+WECHAT = {
|
|
| 194 |
+ 'JSAPI': {
|
|
| 195 |
+ 'trade_type': 'JSAPI', # JSAPI-网页支付、NATIVE-原生支付、APP-APP支付、MICROPAY-刷卡支付 |
|
| 196 |
+ 'token': '5201314', |
|
| 197 |
+ 'appID': '', |
|
| 198 |
+ 'appsecret': '', |
|
| 199 |
+ 'encodingaeskey': '', |
|
| 200 |
+ 'mchID': '', |
|
| 201 |
+ 'apiKey': '', |
|
| 202 |
+ 'mch_cert': '', |
|
| 203 |
+ 'mch_key': '', |
|
| 204 |
+ 'redpack': {
|
|
| 205 |
+ |
|
| 206 |
+ } |
|
| 207 |
+ }, |
|
| 208 |
+} |
|
| 209 |
+ |
|
| 210 |
+WECHAT_DEFAULT_CFG = 'JSAPI' |
|
| 211 |
+ |
|
| 212 |
+# 微信唯一标识 |
|
| 213 |
+# Choices: 'unionid' or 'openid' |
|
| 214 |
+# |
|
| 215 |
+# models.py |
|
| 216 |
+# 'unique_identifier': self.unionid if settings.WECHAT_UNIQUE_IDENTIFICATION == 'unionid' else self.openid, |
|
| 217 |
+# views.py |
|
| 218 |
+# unique_identifier = request.POST.get(settings.WECHAT_UNIQUE_IDENTIFICATION, '') |
|
| 219 |
+# profile = Profile.objects.get(**{settings.WECHAT_UNIQUE_IDENTIFICATION: unique_identifier})
|
|
| 220 |
+# |
|
| 221 |
+# If not bind to OpenPlat, change `WECHAT_UNIQUE_IDENTIFICATION` as `openid` |
|
| 222 |
+WECHAT_UNIQUE_IDENTIFICATION = 'unionid' |
|
| 223 |
+ |
|
| 224 |
+# Token 错误重授权设置 |
|
| 225 |
+TOKEN_CHECK_KEY = '' |
|
| 226 |
+# TOKEN_CHECK_KEY = 'user_id' |
|
| 227 |
+WECHAT_OAUTH2_REDIRECT_ENTRY = '' |
|
| 228 |
+WECHAT_OAUTH2_REDIRECT_URL = '' |
|
| 229 |
+ |
|
| 230 |
+# Cookie 设置 |
|
| 231 |
+DJANGO_WE_COOKIE_MAX_AGE = COOKIE_MAX_AGE = 31536000 # 单位:秒,1年:365 * 24 * 60 * 60 = 31536000 |
|
| 232 |
+DJANGO_WE_COOKIE_SALT = COOKIE_SALT = 'djwe' # Salt for ``set_signed_cookie`` |
|
| 233 |
+# Cookie 校验设置 |
|
| 234 |
+COOKIE_USER_CHECK_KEY = '' |
|
| 235 |
+# COOKIE_USER_CHECK_KEY = 'user_id' |
|
| 236 |
+ |
|
| 237 |
+# 邮件设置 |
|
| 238 |
+# https://docs.djangoproject.com/en/1.11/howto/error-reporting/#email-reports |
|
| 239 |
+# When DEBUG is False, Django will email the users listed in the ADMINS setting |
|
| 240 |
+# whenever your code raises an unhandled exception and results in an internal server error (HTTP status code 500). |
|
| 241 |
+# 只有当 DEBUG = False 的时候,才会邮件发送报错信息 |
|
| 242 |
+# Email address that error messages come from. |
|
| 243 |
+SERVER_EMAIL = 'error.notify@exmail.com' |
|
| 244 |
+# The email backend to use. For possible shortcuts see django.core.mail. |
|
| 245 |
+# The default is to use the SMTP backend. |
|
| 246 |
+# Third-party backends can be specified by providing a Python path |
|
| 247 |
+# to a module that defines an EmailBackend class. |
|
| 248 |
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
|
| 249 |
+# Host for sending email. |
|
| 250 |
+EMAIL_HOST = 'smtp.exmail.qq.com' |
|
| 251 |
+# Port for sending email. |
|
| 252 |
+EMAIL_PORT = 25 |
|
| 253 |
+# Optional SMTP authentication information for EMAIL_HOST. |
|
| 254 |
+EMAIL_HOST_USER = 'error.notify@exmail.com' |
|
| 255 |
+EMAIL_HOST_PASSWORD = '<^_^>pwd<^_^>' |
|
| 256 |
+EMAIL_USE_TLS = False |
|
| 257 |
+EMAIL_USE_SSL = False |
|
| 258 |
+EMAIL_SSL_CERTFILE = None |
|
| 259 |
+EMAIL_SSL_KEYFILE = None |
|
| 260 |
+# Default: None |
|
| 261 |
+# Specifies a timeout in seconds for blocking operations like the connection attempt. |
|
| 262 |
+# socket.error: [Errno 110] Connection timed out |
|
| 263 |
+# 如果不设置 EMAIL_TIMEOUT,一旦 sock.connect 连接有问题 error: (110, 'Connection timed out') |
|
| 264 |
+# 就会导致进程一直卡住,最终导致服务崩溃 |
|
| 265 |
+# EMAIL_TIMEOUT = None |
|
| 266 |
+EMAIL_TIMEOUT = 3 |
|
| 267 |
+# Default email address to use for various automated correspondence from |
|
| 268 |
+# the site managers. |
|
| 269 |
+DEFAULT_FROM_EMAIL = 'error.notify <error.notify@exmail.com>' |
|
| 270 |
+# People who get code error notifications. |
|
| 271 |
+# In the format [('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com')]
|
|
| 272 |
+# Default: [], not send code error notifications. |
|
| 273 |
+# https://github.com/django/django/blob/5fcfe5361e5b8c9738b1ee4c1e9a6f293a7dda40/django/core/mail/__init__.py#L90 |
|
| 274 |
+# ADMINS = [('Zhang San', 'san.zhang@exmail.com'), ('Li Si', 'si.li@exmail.com')]
|
|
| 275 |
+ADMINS = [] |
|
| 276 |
+# Not-necessarily-technical managers of the site. They get broken link |
|
| 277 |
+# notifications and other various emails. |
|
| 278 |
+MANAGERS = ADMINS |
|
| 279 |
+# Subject-line prefix for email messages send with django.core.mail.mail_admins |
|
| 280 |
+# or ...mail_managers. Make sure to include the trailing space. |
|
| 281 |
+EMAIL_SUBJECT_PREFIX = u'[Thermometer] ' |
|
| 282 |
+ |
|
| 283 |
+# Django-Admin Settings |
|
| 284 |
+DJANGO_ADMIN_DISABLE_DELETE_SELECTED = False |
|
| 285 |
+ |
|
| 286 |
+# Django-FILE-UPLOAD Settings |
|
| 287 |
+DJANGO_FILE_UPLOAD_USE_YM = True |
|
| 288 |
+DJANGO_FILE_UPLOAD_USE_DT = True |
|
| 289 |
+ |
|
| 290 |
+# Django-Logit Settings |
|
| 291 |
+DJANGO_LOGIT_ENABLED = True |
|
| 292 |
+DJANGO_LOGIT_BODY_FLAG = False |
|
| 293 |
+DJANGO_LOGIT_RES_FLAG = False |
|
| 294 |
+ |
|
| 295 |
+# Django-Onerror Settings |
|
| 296 |
+DJANGO_ONERROR_ACCEPT_REPORT = True |
|
| 297 |
+DJANGO_ONERROR_ADMIN_SITE_REGISTER = True |
|
| 298 |
+ |
|
| 299 |
+# Django-Short-URL Settings |
|
| 300 |
+# Redirect url when short url not exists |
|
| 301 |
+DJANGO_SHORT_URL_REDIRECT_URL = '' |
|
| 302 |
+ |
|
| 303 |
+# Django-We Settings |
|
| 304 |
+DJANGO_WE_QUOTE_OR_NOT = True |
|
| 305 |
+DJANGO_WE_MODEL_DISPLAY_OR_NOT = True |
|
| 306 |
+# Enable Cookie or not |
|
| 307 |
+# DJANGO_WE_BASE_REDIRECT_SET_COOKIE = False |
|
| 308 |
+# DJANGO_WE_USERINFO_REDIRECT_SET_COOKIE = True |
|
| 309 |
+# Cookie Config |
|
| 310 |
+DJANGO_WE_COOKIE_MAX_AGE = COOKIE_MAX_AGE |
|
| 311 |
+DJANGO_WE_COOKIE_SALT = COOKIE_SALT |
|
| 312 |
+ |
|
| 313 |
+# 开发调试相关配置 |
|
| 314 |
+if DEBUG: |
|
| 315 |
+ try: |
|
| 316 |
+ from .local_settings_dev import * |
|
| 317 |
+ except ImportError: |
|
| 318 |
+ pass |
|
| 319 |
+ |
|
| 320 |
+try: |
|
| 321 |
+ from .local_settings import * |
|
| 322 |
+except ImportError: |
|
| 323 |
+ pass |
|
| 324 |
+ |
|
| 325 |
+try: |
|
| 326 |
+ from .django_file_callback_settings import * |
|
| 327 |
+except ImportError: |
|
| 328 |
+ pass |
|
| 329 |
+ |
|
| 330 |
+try: |
|
| 331 |
+ from .django_we_callback_settings import * |
|
| 332 |
+except ImportError: |
|
| 333 |
+ pass |
|
| 334 |
+ |
|
| 335 |
+# 依赖 local_settings 中的配置 |
|
| 336 |
+# 微信授权设置 |
|
| 337 |
+# WECHAT_OAUTH2_REDIRECT_URI = '{0}/we/oauth2?scope={{0}}&redirect_url={{1}}'.format(DOMAIN)
|
|
| 338 |
+# Shorten URL |
|
| 339 |
+# ``o`` is short for oauth2 |
|
| 340 |
+# ``r`` is short for redirect_url |
|
| 341 |
+WECHAT_OAUTH2_REDIRECT_URI = '{0}/we/o?scope={{0}}&r={{1}}'.format(DOMAIN)
|
|
| 342 |
+WECHAT_OAUTH2_USERINFO_REDIRECT_URI = '{0}/we/o?r={{0}}'.format(DOMAIN) # Scope default snsapi_userinfo
|
|
| 343 |
+WECHAT_BASE_REDIRECT_URI = '{0}/we/base_redirect'.format(DOMAIN)
|
|
| 344 |
+WECHAT_USERINFO_REDIRECT_URI = '{0}/we/userinfo_redirect'.format(DOMAIN)
|
|
| 345 |
+WECHAT_DIRECT_BASE_REDIRECT_URI = '{0}/we/direct_base_redirect'.format(DOMAIN)
|
|
| 346 |
+WECHAT_DIRECT_USERINFO_REDIRECT_URI = '{0}/we/direct_userinfo_redirect'.format(DOMAIN)
|
|
| 347 |
+ |
|
| 348 |
+# Redis 连接 |
|
| 349 |
+WECHAT_REDIS_OBJ = REDIS_CACHE = connector(REDIS.get('default', {}))
|
|
| 350 |
+ |
|
| 351 |
+# LOGGER 设置 |
|
| 352 |
+# python manage.py rlistlog --key=django:logit:thermometer --filename=/tmp/thermometer.logit.log |
|
| 353 |
+LOGGING = {
|
|
| 354 |
+ 'version': 1, |
|
| 355 |
+ 'disable_existing_loggers': False, |
|
| 356 |
+ 'formatters': {
|
|
| 357 |
+ 'verbose': {
|
|
| 358 |
+ 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' |
|
| 359 |
+ }, |
|
| 360 |
+ 'simple': {
|
|
| 361 |
+ 'format': '%(levelname)s %(message)s' |
|
| 362 |
+ }, |
|
| 363 |
+ }, |
|
| 364 |
+ 'handlers': {
|
|
| 365 |
+ 'logit': {
|
|
| 366 |
+ 'level': 'DEBUG', |
|
| 367 |
+ 'class': 'rlog.RedisListHandler', |
|
| 368 |
+ 'redis_client': REDIS_CACHE, |
|
| 369 |
+ 'key': 'django:logit:thermometer', |
|
| 370 |
+ 'formatter': 'verbose', |
|
| 371 |
+ }, |
|
| 372 |
+ 'console': {
|
|
| 373 |
+ 'level': 'DEBUG', |
|
| 374 |
+ 'class': 'logging.StreamHandler', |
|
| 375 |
+ 'formatter': 'verbose' |
|
| 376 |
+ }, |
|
| 377 |
+ }, |
|
| 378 |
+ 'loggers': {
|
|
| 379 |
+ 'logit': {
|
|
| 380 |
+ 'handlers': ['logit'], |
|
| 381 |
+ 'level': 'DEBUG', |
|
| 382 |
+ 'propagate': True, |
|
| 383 |
+ }, |
|
| 384 |
+ 'console': {
|
|
| 385 |
+ 'handlers': ['console'], |
|
| 386 |
+ 'level': 'DEBUG', |
|
| 387 |
+ 'propagate': True, |
|
| 388 |
+ }, |
|
| 389 |
+ }, |
|
| 390 |
+} |
|
| 391 |
+ |
|
| 392 |
+# MAX_BIGINT |
|
| 393 |
+# Why Not ``sys.maxint`` |
|
| 394 |
+# n bit platform sys.maxint = 2 ** (n - 1) - 1 |
|
| 395 |
+# 64 bit 9223372036854775807, 32 bit 2147483647 |
|
| 396 |
+from django.db.models import BigIntegerField # isort:skip |
|
| 397 |
+MAX_BIGINT = BigIntegerField.MAX_BIGINT |
@@ -0,0 +1,68 @@ |
||
| 1 |
+.text-center {
|
|
| 2 |
+ text-align: center; |
|
| 3 |
+} |
|
| 4 |
+ |
|
| 5 |
+/* |
|
| 6 |
+ 文本溢出省略,元素需要设置定宽度 |
|
| 7 |
+ */ |
|
| 8 |
+/* 单行 */ |
|
| 9 |
+.text_ellipsis {
|
|
| 10 |
+ overflow: hidden; |
|
| 11 |
+ white-space: nowrap; |
|
| 12 |
+ text-overflow: ellipsis; |
|
| 13 |
+} |
|
| 14 |
+/* 多行 */ |
|
| 15 |
+.a {
|
|
| 16 |
+ overflow: hidden; |
|
| 17 |
+ text-overflow: ellipsis; |
|
| 18 |
+ display: -webkit-box; |
|
| 19 |
+ -webkit-line-clamp: 2; |
|
| 20 |
+ -webkit-box-orient: vertical; |
|
| 21 |
+} |
|
| 22 |
+ |
|
| 23 |
+/* |
|
| 24 |
+ 浮动 & 清除浮动 |
|
| 25 |
+ */ |
|
| 26 |
+.fl {
|
|
| 27 |
+ float: left; |
|
| 28 |
+} |
|
| 29 |
+ |
|
| 30 |
+.fr {
|
|
| 31 |
+ float: right; |
|
| 32 |
+} |
|
| 33 |
+ |
|
| 34 |
+.clearfix {
|
|
| 35 |
+ zoom: 1; |
|
| 36 |
+} |
|
| 37 |
+ |
|
| 38 |
+.clearfix:after {
|
|
| 39 |
+ content: "\200B"; |
|
| 40 |
+ display: block; |
|
| 41 |
+ height: 0; |
|
| 42 |
+ clear: both; |
|
| 43 |
+} |
|
| 44 |
+ |
|
| 45 |
+.clearfix:after {content:"."; display:block; height:0; visibility:hidden; clear:both; }
|
|
| 46 |
+.clearfix { *zoom:1; }
|
|
| 47 |
+ |
|
| 48 |
+/* |
|
| 49 |
+ 解决安卓微信点击图片预览问题 |
|
| 50 |
+ 这个会让 img 标签的点击事件失效,如果想要点击图片就要给上面再写一层 |
|
| 51 |
+ 需要长按识别二维码的时候,则再单独给该图片添加 |
|
| 52 |
+ ```css |
|
| 53 |
+ pointer-events: auto; |
|
| 54 |
+ ``` |
|
| 55 |
+ 来恢复对应的点击事件 |
|
| 56 |
+ */ |
|
| 57 |
+img {
|
|
| 58 |
+ pointer-events: none; |
|
| 59 |
+} |
|
| 60 |
+ |
|
| 61 |
+.clickable {
|
|
| 62 |
+ pointer-events: auto; |
|
| 63 |
+} |
|
| 64 |
+ |
|
| 65 |
+/* Input 自动填充后,移除 Chrome 默认黄色 */ |
|
| 66 |
+input:-webkit-autofill {
|
|
| 67 |
+ box-shadow: 0 0 0 1000px white inset !important; |
|
| 68 |
+} |
@@ -0,0 +1,574 @@ |
||
| 1 |
+!(function(e, t) {
|
|
| 2 |
+ var config = {
|
|
| 3 |
+ wxconfig: 'http://api.tt4it.com/wx/jsapi_signature', |
|
| 4 |
+ callback: 'callback' |
|
| 5 |
+ }, wxData = {
|
|
| 6 |
+ debug: false, |
|
| 7 |
+ imgUrl: '', |
|
| 8 |
+ link: '', |
|
| 9 |
+ desc: '', |
|
| 10 |
+ title: '', |
|
| 11 |
+ timeLine: '' |
|
| 12 |
+ }, wxConfig = {
|
|
| 13 |
+ hide: false, |
|
| 14 |
+ baseFlag: false, |
|
| 15 |
+ baseHide: false, |
|
| 16 |
+ close: false, |
|
| 17 |
+ hideMenuItems: [], |
|
| 18 |
+ showMenuItems: [] |
|
| 19 |
+ }, jsApiList = [ |
|
| 20 |
+ 'checkJsApi', |
|
| 21 |
+ 'onMenuShareTimeline', |
|
| 22 |
+ 'onMenuShareAppMessage', |
|
| 23 |
+ 'onMenuShareQQ', |
|
| 24 |
+ 'onMenuShareWeibo', |
|
| 25 |
+ 'onMenuShareQZone', |
|
| 26 |
+ 'hideMenuItems', |
|
| 27 |
+ 'showMenuItems', |
|
| 28 |
+ 'hideAllNonBaseMenuItem', |
|
| 29 |
+ 'showAllNonBaseMenuItem', |
|
| 30 |
+ 'translateVoice', |
|
| 31 |
+ 'startRecord', |
|
| 32 |
+ 'stopRecord', |
|
| 33 |
+ 'onRecordEnd', |
|
| 34 |
+ 'playVoice', |
|
| 35 |
+ 'pauseVoice', |
|
| 36 |
+ 'stopVoice', |
|
| 37 |
+ 'uploadVoice', |
|
| 38 |
+ 'downloadVoice', |
|
| 39 |
+ 'chooseImage', |
|
| 40 |
+ 'previewImage', |
|
| 41 |
+ 'uploadImage', |
|
| 42 |
+ 'downloadImage', |
|
| 43 |
+ 'getLocalImgData', |
|
| 44 |
+ 'getNetworkType', |
|
| 45 |
+ 'openLocation', |
|
| 46 |
+ 'getLocation', |
|
| 47 |
+ 'hideOptionMenu', |
|
| 48 |
+ 'showOptionMenu', |
|
| 49 |
+ 'closeWindow', |
|
| 50 |
+ 'scanQRCode', |
|
| 51 |
+ 'chooseWXPay', |
|
| 52 |
+ 'openEnterpriseRedPacket', |
|
| 53 |
+ 'openProductSpecificView', |
|
| 54 |
+ 'addCard', |
|
| 55 |
+ 'chooseCard', |
|
| 56 |
+ 'openCard' |
|
| 57 |
+ ], wxApiFun |
|
| 58 |
+ |
|
| 59 |
+ function isEmpty(obj) {
|
|
| 60 |
+ if (obj == null) return true |
|
| 61 |
+ if (obj.length > 0) return false |
|
| 62 |
+ if (obj.length === 0) return true |
|
| 63 |
+ for (var key in obj) {
|
|
| 64 |
+ if (Object.prototype.hasOwnProperty.call(obj, key)) return false |
|
| 65 |
+ } |
|
| 66 |
+ return true |
|
| 67 |
+ } |
|
| 68 |
+ |
|
| 69 |
+ function isNotEmpty(obj) {
|
|
| 70 |
+ return !isEmpty(obj) |
|
| 71 |
+ } |
|
| 72 |
+ |
|
| 73 |
+ function isOpenOnPC() { // 判断当前网页是否在 PC 浏览器中打开
|
|
| 74 |
+ var ua = navigator.userAgent |
|
| 75 |
+ return /windows nt/i.test(ua) || /macintosh/i.test(ua) || /linux x86_64/i.test(ua) |
|
| 76 |
+ } |
|
| 77 |
+ |
|
| 78 |
+ function isOpenInWeixin() { // 判断当前网页是否在微信内置浏览器中打开
|
|
| 79 |
+ return /micromessenger/i.test(navigator.userAgent) |
|
| 80 |
+ } |
|
| 81 |
+ |
|
| 82 |
+ function getWeixinVersion() {
|
|
| 83 |
+ var ua = navigator.userAgent, |
|
| 84 |
+ mt = ua.match(/micromessenger\/([\d.]+)/i) |
|
| 85 |
+ return (mt ? mt[1] : '') |
|
| 86 |
+ } |
|
| 87 |
+ |
|
| 88 |
+ // This function checks whether Wechat is the appointed version or not |
|
| 89 |
+ // Cmp: http://jsperf.com/regexp-test-vs-indexof-ignore-upper-and-lower |
|
| 90 |
+ function isWeixinVersion(version) {
|
|
| 91 |
+ // return new RegExp('micromessenger/' + version , 'i').test(navigator.userAgent)
|
|
| 92 |
+ return navigator.userAgent.toLowerCase().indexOf('micromessenger/' + version) != -1
|
|
| 93 |
+ } |
|
| 94 |
+ |
|
| 95 |
+ function hideOptionMenu() {
|
|
| 96 |
+ wxConfig.hide = true |
|
| 97 |
+ fixedWxData() |
|
| 98 |
+ } |
|
| 99 |
+ |
|
| 100 |
+ function showOptionMenu() {
|
|
| 101 |
+ wxConfig.hide = false |
|
| 102 |
+ fixedWxData() |
|
| 103 |
+ } |
|
| 104 |
+ |
|
| 105 |
+ function hideMenuItems(items) {
|
|
| 106 |
+ wxConfig.hideMenuItems = items |
|
| 107 |
+ fixedWxData() |
|
| 108 |
+ } |
|
| 109 |
+ |
|
| 110 |
+ function showMenuItems(items) {
|
|
| 111 |
+ wxConfig.showMenuItems = items |
|
| 112 |
+ fixedWxData() |
|
| 113 |
+ } |
|
| 114 |
+ |
|
| 115 |
+ function hideAllNonBaseMenuItem() {
|
|
| 116 |
+ wxConfig.baseFlag = true |
|
| 117 |
+ wxConfig.baseHide = true |
|
| 118 |
+ fixedWxData() |
|
| 119 |
+ } |
|
| 120 |
+ |
|
| 121 |
+ function showAllNonBaseMenuItem() {
|
|
| 122 |
+ wxConfig.baseFlag = true |
|
| 123 |
+ wxConfig.baseHide = false |
|
| 124 |
+ fixedWxData() |
|
| 125 |
+ } |
|
| 126 |
+ |
|
| 127 |
+ function closeWindow() {
|
|
| 128 |
+ wxConfig.close = true |
|
| 129 |
+ fixedWxData() |
|
| 130 |
+ } |
|
| 131 |
+ |
|
| 132 |
+ function wxReady(data) {
|
|
| 133 |
+ data = typeof data === 'object' ? data : JSON.parse(data) |
|
| 134 |
+ wx.config({
|
|
| 135 |
+ debug: wxData.debug, |
|
| 136 |
+ appId: data.appId, |
|
| 137 |
+ timestamp: data.timestamp, |
|
| 138 |
+ nonceStr: data.nonceStr, |
|
| 139 |
+ signature: data.signature, |
|
| 140 |
+ jsApiList: jsApiList |
|
| 141 |
+ }) |
|
| 142 |
+ |
|
| 143 |
+ var callbacks = {
|
|
| 144 |
+ trigger: function (res) {
|
|
| 145 |
+ // alert('用户点击发送给朋友')
|
|
| 146 |
+ if (JSWE.wxTrigger) {JSWE.wxTrigger(res)}
|
|
| 147 |
+ }, |
|
| 148 |
+ success: function (res) {
|
|
| 149 |
+ // alert('已分享')
|
|
| 150 |
+ if (JSWE.wxSuccess) {JSWE.wxSuccess(res)}
|
|
| 151 |
+ }, |
|
| 152 |
+ cancel: function (res) {
|
|
| 153 |
+ // alert('已取消')
|
|
| 154 |
+ if (JSWE.wxCancel) {JSWE.wxCancel(res)}
|
|
| 155 |
+ }, |
|
| 156 |
+ fail: function (res) {
|
|
| 157 |
+ // alert(JSON.stringify(res)) |
|
| 158 |
+ if (JSWE.wxFail) {JSWE.wxFail(res)}
|
|
| 159 |
+ } |
|
| 160 |
+ }, shareInfo = function(flag) {
|
|
| 161 |
+ var _share = {
|
|
| 162 |
+ title: flag ? wxData.title : (wxData.timeLine || wxData.desc), |
|
| 163 |
+ link: wxData.link, |
|
| 164 |
+ imgUrl: wxData.imgUrl, |
|
| 165 |
+ trigger: callbacks.trigger, |
|
| 166 |
+ success: callbacks.success, |
|
| 167 |
+ cancel: callbacks.cancel, |
|
| 168 |
+ fail: callbacks.fail |
|
| 169 |
+ } |
|
| 170 |
+ if (flag) _share.desc = wxData.desc |
|
| 171 |
+ return _share |
|
| 172 |
+ }, wxShareApi = function() {
|
|
| 173 |
+ // 2. 分享接口 |
|
| 174 |
+ // 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口 |
|
| 175 |
+ wx.onMenuShareAppMessage(shareInfo(1)) |
|
| 176 |
+ // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口 |
|
| 177 |
+ wx.onMenuShareTimeline(shareInfo(0)) |
|
| 178 |
+ // 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口 |
|
| 179 |
+ wx.onMenuShareQQ(shareInfo(1)) |
|
| 180 |
+ // 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口 |
|
| 181 |
+ wx.onMenuShareWeibo(shareInfo(1)) |
|
| 182 |
+ // 2.5 监听“分享到QQ空间”按钮点击、自定义分享内容及分享结果接口 |
|
| 183 |
+ wx.onMenuShareQZone(shareInfo(1)) |
|
| 184 |
+ }, wxMenuApi = function () {
|
|
| 185 |
+ // 8. 界面操作接口 |
|
| 186 |
+ // 8.1 隐藏右上角菜单 |
|
| 187 |
+ // 8.2 显示右上角菜单 |
|
| 188 |
+ if (wxConfig.hide) {wx.hideOptionMenu()} else {wx.showOptionMenu()}
|
|
| 189 |
+ // 8.3 批量隐藏菜单项 |
|
| 190 |
+ if (isNotEmpty(wxConfig.hideMenuItems)) {
|
|
| 191 |
+ wx.hideMenuItems({
|
|
| 192 |
+ menuList: wxConfig.hideMenuItems, |
|
| 193 |
+ success: function (res) {
|
|
| 194 |
+ if (JSWE.wxHideMenuItemsSuccess) {JSWE.wxHideMenuItemsSuccess(res)}
|
|
| 195 |
+ }, |
|
| 196 |
+ fail: function (res) {
|
|
| 197 |
+ if (JSWE.wxHideMenuItemsFail) {JSWE.wxHideMenuItemsFail(res)}
|
|
| 198 |
+ } |
|
| 199 |
+ }) |
|
| 200 |
+ } |
|
| 201 |
+ // 8.4 批量显示菜单项 |
|
| 202 |
+ if (isNotEmpty(wxConfig.showMenuItems)) {
|
|
| 203 |
+ wx.showMenuItems({
|
|
| 204 |
+ menuList: wxConfig.showMenuItems, |
|
| 205 |
+ success: function (res) {
|
|
| 206 |
+ if (JSWE.wxShowMenuItemsSuccess) {JSWE.wxShowMenuItemsSuccess(res)}
|
|
| 207 |
+ }, |
|
| 208 |
+ fail: function (res) {
|
|
| 209 |
+ if (JSWE.wxShowMenuItemsFail) {JSWE.wxShowMenuItemsFail(res)}
|
|
| 210 |
+ } |
|
| 211 |
+ }) |
|
| 212 |
+ } |
|
| 213 |
+ // 8.5 隐藏所有非基本菜单项 |
|
| 214 |
+ // 8.6 显示所有被隐藏的非基本菜单项 |
|
| 215 |
+ if (wxConfig.baseFlag) {
|
|
| 216 |
+ if (wxConfig.baseHide) {wx.hideAllNonBaseMenuItem()} else {wx.showAllNonBaseMenuItem()}
|
|
| 217 |
+ } |
|
| 218 |
+ // 8.7 关闭当前窗口 |
|
| 219 |
+ if (wxConfig.close) {wx.closeWindow()}
|
|
| 220 |
+ }, wxVoiceApi = function() {
|
|
| 221 |
+ // 4.3 监听录音自动停止 |
|
| 222 |
+ wx.onVoiceRecordEnd({
|
|
| 223 |
+ complete: function (res) {
|
|
| 224 |
+ voice.localId = res.localId |
|
| 225 |
+ if (JSWE.wxVoiceRecordEnd) {JSWE.wxVoiceRecordEnd(res)}
|
|
| 226 |
+ } |
|
| 227 |
+ }) |
|
| 228 |
+ // 4.7 监听录音播放停止 |
|
| 229 |
+ wx.onVoicePlayEnd({
|
|
| 230 |
+ complete: function (res) {
|
|
| 231 |
+ if (JSWE.wxVoicePlayEnd) {JSWE.wxVoicePlayEnd(res)}
|
|
| 232 |
+ } |
|
| 233 |
+ }) |
|
| 234 |
+ }, wxApi = function () {
|
|
| 235 |
+ wxShareApi() |
|
| 236 |
+ wxMenuApi() |
|
| 237 |
+ wxVoiceApi() |
|
| 238 |
+ } |
|
| 239 |
+ |
|
| 240 |
+ wx.ready(wxApi) |
|
| 241 |
+ |
|
| 242 |
+ return wxApiFun = wxApi |
|
| 243 |
+ } |
|
| 244 |
+ |
|
| 245 |
+ if (isOpenInWeixin() || isOpenOnPC()) {
|
|
| 246 |
+ if ('undefined' !== typeof JSWE_CONF_UPDATE) JSWE_CONF_UPDATE(config)
|
|
| 247 |
+ $.ajax({
|
|
| 248 |
+ url: config.wxconfig, |
|
| 249 |
+ type: 'get', |
|
| 250 |
+ dataType: 'jsonp', |
|
| 251 |
+ jsonpCallback: config.callback, |
|
| 252 |
+ data: {
|
|
| 253 |
+ url: window.location.href.split('#')[0]
|
|
| 254 |
+ }, |
|
| 255 |
+ success: wxReady |
|
| 256 |
+ }) |
|
| 257 |
+ } |
|
| 258 |
+ |
|
| 259 |
+ function initWxData(data, flag) {
|
|
| 260 |
+ for(var d in data) {if (d in wxData) wxData[d] = data[d]}
|
|
| 261 |
+ if (flag) fixedWxData() |
|
| 262 |
+ } |
|
| 263 |
+ |
|
| 264 |
+ function changeWxData(key, value, flag) {
|
|
| 265 |
+ if (key in falDwxDataata) {wxData[key] = value}
|
|
| 266 |
+ if (flag) fixedWxData() |
|
| 267 |
+ } |
|
| 268 |
+ |
|
| 269 |
+ function fixedWxData() {
|
|
| 270 |
+ if ('undefined' !== typeof wxApiFun) wxApiFun()
|
|
| 271 |
+ } |
|
| 272 |
+ |
|
| 273 |
+ // 3 智能接口 |
|
| 274 |
+ var voice = {
|
|
| 275 |
+ localId: '', |
|
| 276 |
+ serverId: '' |
|
| 277 |
+ } |
|
| 278 |
+ // 3.1 识别音频并返回识别结果 |
|
| 279 |
+ function translateVoice() {
|
|
| 280 |
+ if (voice.localId == '') {
|
|
| 281 |
+ if (JSWE.wxTranslateVoiceEmpty) {JSWE.wxTranslateVoiceEmpty()}
|
|
| 282 |
+ return |
|
| 283 |
+ } |
|
| 284 |
+ wx.translateVoice({
|
|
| 285 |
+ localId: voice.localId, |
|
| 286 |
+ complete: function (res) {
|
|
| 287 |
+ if (JSWE.wxTranslateVoiceComplete) {JSWE.wxTranslateVoiceComplete(res)}
|
|
| 288 |
+ } |
|
| 289 |
+ }) |
|
| 290 |
+ } |
|
| 291 |
+ |
|
| 292 |
+ // 4 音频接口 |
|
| 293 |
+ // 4.1 开始录音 |
|
| 294 |
+ function startRecord() {
|
|
| 295 |
+ wx.startRecord({
|
|
| 296 |
+ cancel: function () {
|
|
| 297 |
+ if (JSWE.wxStartRecordCancel) {JSWE.wxStartRecordCancel(res)}
|
|
| 298 |
+ } |
|
| 299 |
+ }) |
|
| 300 |
+ } |
|
| 301 |
+ |
|
| 302 |
+ // 4.2 停止录音 |
|
| 303 |
+ function stopRecord() {
|
|
| 304 |
+ wx.stopRecord({
|
|
| 305 |
+ success: function (res) {
|
|
| 306 |
+ voice.localId = res.localId |
|
| 307 |
+ if (JSWE.wxStopRecordSuccess) {JSWE.wxStopRecordSuccess(res)}
|
|
| 308 |
+ }, |
|
| 309 |
+ fail: function (res) {
|
|
| 310 |
+ if (JSWE.wxStopRecordFail) {JSWE.wxStopRecordFail(res)}
|
|
| 311 |
+ } |
|
| 312 |
+ }) |
|
| 313 |
+ } |
|
| 314 |
+ |
|
| 315 |
+ // 4.4 播放音频 |
|
| 316 |
+ function playVoice() {
|
|
| 317 |
+ if (voice.localId == '') {
|
|
| 318 |
+ if (JSWE.wxPlayVoiceEmpty) {JSWE.wxPlayVoiceEmpty()}
|
|
| 319 |
+ return |
|
| 320 |
+ } |
|
| 321 |
+ wx.playVoice({
|
|
| 322 |
+ localId: voice.localId |
|
| 323 |
+ }) |
|
| 324 |
+ } |
|
| 325 |
+ |
|
| 326 |
+ // 4.5 暂停播放音频 |
|
| 327 |
+ function pauseVoice() {
|
|
| 328 |
+ if (voice.localId == '') {
|
|
| 329 |
+ if (JSWE.wxPauseVoiceEmpty) {JSWE.wxPauseVoiceEmpty()}
|
|
| 330 |
+ return |
|
| 331 |
+ } |
|
| 332 |
+ wx.pauseVoice({
|
|
| 333 |
+ localId: voice.localId |
|
| 334 |
+ }) |
|
| 335 |
+ } |
|
| 336 |
+ |
|
| 337 |
+ // 4.6 停止播放音频 |
|
| 338 |
+ function stopVoice() {
|
|
| 339 |
+ if (voice.localId == '') {
|
|
| 340 |
+ if (JSWE.wxStopVoiceEmpty) {JSWE.wxStopVoiceEmpty()}
|
|
| 341 |
+ return |
|
| 342 |
+ } |
|
| 343 |
+ wx.stopVoice({
|
|
| 344 |
+ localId: voice.localId |
|
| 345 |
+ }) |
|
| 346 |
+ } |
|
| 347 |
+ |
|
| 348 |
+ // 4.8 上传语音 |
|
| 349 |
+ function uploadVoice() {
|
|
| 350 |
+ var localId = voice.localId |
|
| 351 |
+ if (localId == '') {
|
|
| 352 |
+ if (JSWE.wxUploadVoiceEmpty) {JSWE.wxUploadVoiceEmpty()}
|
|
| 353 |
+ return |
|
| 354 |
+ } |
|
| 355 |
+ wx.uploadVoice({
|
|
| 356 |
+ localId: localId, |
|
| 357 |
+ success: function (res) {
|
|
| 358 |
+ voice.serverId = res.serverId |
|
| 359 |
+ if (JSWE.wxUploadVoiceSuccess) {JSWE.wxUploadVoiceSuccess(res, localId)}
|
|
| 360 |
+ } |
|
| 361 |
+ }) |
|
| 362 |
+ } |
|
| 363 |
+ |
|
| 364 |
+ // 4.9 下载语音 |
|
| 365 |
+ function downloadVoice() {
|
|
| 366 |
+ var serverId = voice.serverId |
|
| 367 |
+ if (serverId == '') {
|
|
| 368 |
+ if (JSWE.wxDownloadVoiceEmpty) {JSWE.wxDownloadVoiceEmpty()}
|
|
| 369 |
+ return |
|
| 370 |
+ } |
|
| 371 |
+ wx.downloadVoice({
|
|
| 372 |
+ serverId: serverId, |
|
| 373 |
+ success: function (res) {
|
|
| 374 |
+ voice.localId = res.localId |
|
| 375 |
+ if (JSWE.wxDownloadVoiceSuccess) {JSWE.wxDownloadVoiceSuccess(res, serverId)}
|
|
| 376 |
+ } |
|
| 377 |
+ }) |
|
| 378 |
+ } |
|
| 379 |
+ |
|
| 380 |
+ // 5 图片接口 |
|
| 381 |
+ var images = {
|
|
| 382 |
+ localIds: [], |
|
| 383 |
+ serverIds: [] |
|
| 384 |
+ } |
|
| 385 |
+ // 5.1 拍照、本地选图 |
|
| 386 |
+ function chooseImage(choose_params) {
|
|
| 387 |
+ if ('undefined' === typeof choose_params) choose_params = {}
|
|
| 388 |
+ wx.chooseImage({
|
|
| 389 |
+ count: choose_params.count || 9, // 默认9 |
|
| 390 |
+ sizeType: choose_params.sizeType || ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 |
|
| 391 |
+ sourceType: choose_params.sourceType || ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 |
|
| 392 |
+ success: function (res) {
|
|
| 393 |
+ images.localIds = res.localIds // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 |
|
| 394 |
+ // 判断是否直接上传 |
|
| 395 |
+ if (choose_params.directUpload) {setTimeout(uploadImages({localIds: images.localIds, isShowProgressTips: choose_params.isShowProgressTips || 1}), 100)}
|
|
| 396 |
+ // 拍照、本地选图成功后的回调函数 |
|
| 397 |
+ if (JSWE.wxChooseImageSuccess) {JSWE.wxChooseImageSuccess(res, choose_params.extras || {})}
|
|
| 398 |
+ } |
|
| 399 |
+ }) |
|
| 400 |
+ } |
|
| 401 |
+ |
|
| 402 |
+ // 5.2 图片预览 |
|
| 403 |
+ function previewImage(preview_params) {
|
|
| 404 |
+ wx.previewImage({
|
|
| 405 |
+ current: preview_params.current, // 当前显示图片的链接,不填则默认为 urls 的第一张 |
|
| 406 |
+ urls: preview_params.urls // 需要预览的图片链接列表 |
|
| 407 |
+ }) |
|
| 408 |
+ } |
|
| 409 |
+ |
|
| 410 |
+ // 5.3 上传图片 |
|
| 411 |
+ function uploadImage(upload_params) {
|
|
| 412 |
+ // 上传图片为异步处理,重复上传同一图片,返回的serverId也是不同的 |
|
| 413 |
+ var localId = upload_params.localId |
|
| 414 |
+ wx.uploadImage({
|
|
| 415 |
+ localId: localId, // 需要上传的图片的本地ID,由chooseImage接口获得 |
|
| 416 |
+ isShowProgressTips: upload_params.isShowProgressTips || 1, // 默认为1,显示进度提示 |
|
| 417 |
+ success: function (res) {
|
|
| 418 |
+ images.serverIds.push(res.serverId) // 返回图片的服务器端ID |
|
| 419 |
+ // 上传图片成功后的回调函数 |
|
| 420 |
+ if (JSWE.wxUploadImageSuccess) {JSWE.wxUploadImageSuccess(res, localId)}
|
|
| 421 |
+ } |
|
| 422 |
+ }) |
|
| 423 |
+ } |
|
| 424 |
+ |
|
| 425 |
+ function uploadImages(upload_params) {
|
|
| 426 |
+ var localIds = upload_params.localIds, isShowProgressTips = upload_params.isShowProgressTips || 1 |
|
| 427 |
+ images.serverIds = [] |
|
| 428 |
+ for (var idx in localIds) {uploadImage({localId: localIds[idx], isShowProgressTips: isShowProgressTips})}
|
|
| 429 |
+ } |
|
| 430 |
+ |
|
| 431 |
+ // 5.4 下载图片 |
|
| 432 |
+ function downloadImage(download_params) {
|
|
| 433 |
+ var serverId = download_params.serverId |
|
| 434 |
+ wx.downloadImage({
|
|
| 435 |
+ serverId: serverId, // 需要下载的图片的服务器端ID,由uploadImage接口获得 |
|
| 436 |
+ isShowProgressTips: download_params.isShowProgressTips || 1, // 默认为1,显示进度提示 |
|
| 437 |
+ success: function (res) {
|
|
| 438 |
+ images.localId.push(res.localId) |
|
| 439 |
+ if (JSWE.wxDownloadImageSuccess) {JSWE.wxDownloadImageSuccess(res, serverId)}
|
|
| 440 |
+ } |
|
| 441 |
+ }) |
|
| 442 |
+ } |
|
| 443 |
+ |
|
| 444 |
+ function downloadImages(download_params) {
|
|
| 445 |
+ var serverIds = download_params.serverIds, isShowProgressTips = download_params.isShowProgressTips || 1 |
|
| 446 |
+ images.localIds = [] |
|
| 447 |
+ for (var idx in serverIds) {downloadImage({serverId: serverIds[idx], isShowProgressTips: isShowProgressTips})}
|
|
| 448 |
+ } |
|
| 449 |
+ |
|
| 450 |
+ function getLocalImgData(localId) {
|
|
| 451 |
+ wx.getLocalImgData({
|
|
| 452 |
+ localId: localId, // 图片的localID |
|
| 453 |
+ success: function (res) {
|
|
| 454 |
+ // var localData = res.localData; // localData是图片的base64数据,可以用img标签显示 |
|
| 455 |
+ if (JSWE.wxGetLocalImgDataSuccess) {JSWE.wxGetLocalImgDataSuccess(res)}
|
|
| 456 |
+ } |
|
| 457 |
+ }) |
|
| 458 |
+ } |
|
| 459 |
+ |
|
| 460 |
+ // 9 微信原生接口 |
|
| 461 |
+ // 9.1.1 扫描二维码并返回结果 |
|
| 462 |
+ // 9.1.2 扫描二维码并返回结果 |
|
| 463 |
+ function scanQRCode(scan_params) {
|
|
| 464 |
+ if ('undefined' === typeof scan_params) scan_params = {}
|
|
| 465 |
+ wx.scanQRCode({
|
|
| 466 |
+ needResult: scan_params.needResult || 0, // 默认为0,0扫描结果由微信处理,1直接返回扫描结果 |
|
| 467 |
+ scanType: scan_params.scanType || ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 |
|
| 468 |
+ success: function (res) { // 当 needResult 为 1 时,扫码返回的结果
|
|
| 469 |
+ if (JSWE.wxScanQRCodeSuccess) {JSWE.wxScanQRCodeSuccess(res)}
|
|
| 470 |
+ } |
|
| 471 |
+ }) |
|
| 472 |
+ } |
|
| 473 |
+ |
|
| 474 |
+ // QRCode & BarCode is different |
|
| 475 |
+ function parseScanQRCodeResultStr(resultStr) {
|
|
| 476 |
+ var strs = resultStr.split(',')
|
|
| 477 |
+ return strs[strs.length - 1] |
|
| 478 |
+ } |
|
| 479 |
+ |
|
| 480 |
+ // 10 微信支付接口 |
|
| 481 |
+ // 10.1 发起一个支付请求 |
|
| 482 |
+ function chooseWXPay(wxpay_params) {
|
|
| 483 |
+ wx.chooseWXPay({
|
|
| 484 |
+ timestamp: wxpay_params.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 |
|
| 485 |
+ nonceStr: wxpay_params.nonceStr, // 支付签名随机串,不长于 32 位 |
|
| 486 |
+ package: wxpay_params.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) |
|
| 487 |
+ signType: wxpay_params.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' |
|
| 488 |
+ paySign: wxpay_params.paySign, // 支付签名 |
|
| 489 |
+ success: function (res) {
|
|
| 490 |
+ // 支付成功后的回调函数 |
|
| 491 |
+ if (JSWE.wxPaySuccess) {JSWE.wxPaySuccess(res)}
|
|
| 492 |
+ } |
|
| 493 |
+ }) |
|
| 494 |
+ } |
|
| 495 |
+ |
|
| 496 |
+ // xx 微信原生企业红包接口 |
|
| 497 |
+ // xx.1 发起一个发送原生企业红包请求 |
|
| 498 |
+ function openEnterpriseRedPacket(wxredpack_params) {
|
|
| 499 |
+ wx.openEnterpriseRedPacket({
|
|
| 500 |
+ timeStamp: wxredpack_params.timeStamp, // 红包签名时间戳,注意原生企业红包接口timeStamp字段名需大写其中的S字符,而支付接口timeStamp字段名无需大写其中的S字符。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 |
|
| 501 |
+ nonceStr: wxredpack_params.nonceStr, // 红包签名随机串,不长于 32 位 |
|
| 502 |
+ package: encodeURIComponent(wxredpack_params.package), // 发放红包接口返回的prepay_id参数值,提交格式如:prepay_id=***) |
|
| 503 |
+ signType: wxredpack_params.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' |
|
| 504 |
+ paySign: wxredpack_params.paySign, // 红包签名 |
|
| 505 |
+ success: function (res) {
|
|
| 506 |
+ // 发送原生企业红包成功后的回调函数 |
|
| 507 |
+ if (JSWE.wxEnterpriseRedPacketSuccess) {JSWE.wxEnterpriseRedPacketSuccess(res)}
|
|
| 508 |
+ } |
|
| 509 |
+ }) |
|
| 510 |
+ } |
|
| 511 |
+ |
|
| 512 |
+ var v = {
|
|
| 513 |
+ version: '1.0.5', |
|
| 514 |
+ |
|
| 515 |
+ // Basic Vars |
|
| 516 |
+ config: config, |
|
| 517 |
+ wxData: wxData, |
|
| 518 |
+ jsApiList: jsApiList, |
|
| 519 |
+ |
|
| 520 |
+ isEmpty: isEmpty, |
|
| 521 |
+ isNotEmpty: isNotEmpty, |
|
| 522 |
+ |
|
| 523 |
+ // Weixin Function |
|
| 524 |
+ isOpenInWeixin: isOpenInWeixin, |
|
| 525 |
+ getWeixinVersion: getWeixinVersion, |
|
| 526 |
+ isWeixinVersion: isWeixinVersion, |
|
| 527 |
+ |
|
| 528 |
+ // Menu Function |
|
| 529 |
+ hideOptionMenu: hideOptionMenu, |
|
| 530 |
+ showOptionMenu: showOptionMenu, |
|
| 531 |
+ hideMenuItems: hideMenuItems, |
|
| 532 |
+ showMenuItems: showMenuItems, |
|
| 533 |
+ hideAllNonBaseMenuItem: hideAllNonBaseMenuItem, |
|
| 534 |
+ showAllNonBaseMenuItem: showAllNonBaseMenuItem, |
|
| 535 |
+ closeWindow: closeWindow, |
|
| 536 |
+ |
|
| 537 |
+ // Share Function |
|
| 538 |
+ initWxData: initWxData, |
|
| 539 |
+ changeWxData: changeWxData, |
|
| 540 |
+ fixedWxData: fixedWxData, |
|
| 541 |
+ |
|
| 542 |
+ // Voice Function |
|
| 543 |
+ voice: voice, |
|
| 544 |
+ translateVoice: translateVoice, |
|
| 545 |
+ startRecord: startRecord, |
|
| 546 |
+ stopRecord: stopRecord, |
|
| 547 |
+ playVoice: playVoice, |
|
| 548 |
+ pauseVoice: pauseVoice, |
|
| 549 |
+ stopVoice: stopVoice, |
|
| 550 |
+ uploadVoice: uploadVoice, |
|
| 551 |
+ downloadVoice: downloadVoice, |
|
| 552 |
+ |
|
| 553 |
+ // Image Function |
|
| 554 |
+ images: images, |
|
| 555 |
+ chooseImage: chooseImage, |
|
| 556 |
+ previewImage: previewImage, |
|
| 557 |
+ uploadImage: uploadImage, |
|
| 558 |
+ uploadImages: uploadImages, |
|
| 559 |
+ downloadImage: downloadImage, |
|
| 560 |
+ downloadImages: downloadImages, |
|
| 561 |
+ getLocalImgData: getLocalImgData, |
|
| 562 |
+ |
|
| 563 |
+ // Scan Function |
|
| 564 |
+ scanQRCode: scanQRCode, |
|
| 565 |
+ parseScanQRCodeResultStr: parseScanQRCodeResultStr, |
|
| 566 |
+ |
|
| 567 |
+ // Pay Function |
|
| 568 |
+ chooseWXPay: chooseWXPay, |
|
| 569 |
+ |
|
| 570 |
+ // EnterpriseRedPacket Function |
|
| 571 |
+ openEnterpriseRedPacket: openEnterpriseRedPacket |
|
| 572 |
+ } |
|
| 573 |
+ e.JSWE = e.V = v |
|
| 574 |
+})(window) |
@@ -0,0 +1,56 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+"""thermometer URL Configuration |
|
| 4 |
+ |
|
| 5 |
+The `urlpatterns` list routes URLs to views. For more information please see: |
|
| 6 |
+ https://docs.djangoproject.com/en/1.11/topics/http/urls/ |
|
| 7 |
+Examples: |
|
| 8 |
+Function views |
|
| 9 |
+ 1. Add an import: from my_app import views |
|
| 10 |
+ 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') |
|
| 11 |
+Class-based views |
|
| 12 |
+ 1. Add an import: from other_app.views import Home |
|
| 13 |
+ 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') |
|
| 14 |
+Including another URLconf |
|
| 15 |
+ 1. Import the include() function: from django.conf.urls import url, include |
|
| 16 |
+ 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
|
|
| 17 |
+""" |
|
| 18 |
+from django.conf import settings |
|
| 19 |
+from django.conf.urls import include, url |
|
| 20 |
+from django.conf.urls.static import static |
|
| 21 |
+from django.contrib import admin |
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+urlpatterns = [ |
|
| 25 |
+ url(r'^admin/', admin.site.urls), |
|
| 26 |
+] |
|
| 27 |
+ |
|
| 28 |
+urlpatterns += [ |
|
| 29 |
+ url(r'^api/', include(('api.urls', 'api'), namespace='api')),
|
|
| 30 |
+ url(r'^uniapi/', include(('django_uniapi.urls', 'uniapi'), namespace='uniapi')),
|
|
| 31 |
+] |
|
| 32 |
+ |
|
| 33 |
+urlpatterns += [ |
|
| 34 |
+ # url(r'^s/', include(('django_short_url.urls', 'django_short_url'), namespace='django_short_url')),
|
|
| 35 |
+] |
|
| 36 |
+ |
|
| 37 |
+urlpatterns += [ |
|
| 38 |
+ url(r'^w/', include(('django_we.urls', 'shortwechat'), namespace='shortwechat')),
|
|
| 39 |
+ url(r'^we/', include(('django_we.urls', 'wechat'), namespace='wechat')),
|
|
| 40 |
+] |
|
| 41 |
+ |
|
| 42 |
+urlpatterns += [ |
|
| 43 |
+ # url(r'^p/', include(('page.urls', 'shortpage'), namespace='shortpage')),
|
|
| 44 |
+ # url(r'^page/', include(('page.urls', 'page'), namespace='page')),
|
|
| 45 |
+] |
|
| 46 |
+ |
|
| 47 |
+if settings.DEBUG: |
|
| 48 |
+ urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) |
|
| 49 |
+ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
|
| 50 |
+ |
|
| 51 |
+# AdminSite |
|
| 52 |
+admin.site.site_header = 'Django administration' |
|
| 53 |
+admin.site.site_title = 'Django site admin' |
|
| 54 |
+# Make site_url/index_title None to hidden |
|
| 55 |
+admin.site.site_url = '/' |
|
| 56 |
+admin.site.index_title = 'Site administration' |
@@ -0,0 +1,17 @@ |
||
| 1 |
+""" |
|
| 2 |
+WSGI config for thermometer project. |
|
| 3 |
+ |
|
| 4 |
+It exposes the WSGI callable as a module-level variable named ``application``. |
|
| 5 |
+ |
|
| 6 |
+For more information on this file, see |
|
| 7 |
+https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ |
|
| 8 |
+""" |
|
| 9 |
+ |
|
| 10 |
+import os |
|
| 11 |
+ |
|
| 12 |
+from django.core.wsgi import get_wsgi_application |
|
| 13 |
+ |
|
| 14 |
+ |
|
| 15 |
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "thermometer.settings")
|
|
| 16 |
+ |
|
| 17 |
+application = get_wsgi_application() |
@@ -0,0 +1,77 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from StatusCode import BaseStatusCode, StatusCodeField |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+class ParamStatusCode(BaseStatusCode): |
|
| 7 |
+ """ 4000xx 参数相关错误码 """ |
|
| 8 |
+ PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description=u'参数不存在') |
|
| 9 |
+ |
|
| 10 |
+ |
|
| 11 |
+class ProfileStatusCode(BaseStatusCode): |
|
| 12 |
+ """ 4001xx 用户相关错误码 """ |
|
| 13 |
+ PROFILE_NOT_FOUND = StatusCodeField(400101, 'Profile Not Found', description=u'用户不存在') |
|
| 14 |
+ |
|
| 15 |
+ |
|
| 16 |
+class PhoneStatusCode(BaseStatusCode): |
|
| 17 |
+ """ 4002xx 手机相关错误码 """ |
|
| 18 |
+ INVALID_PHONE = StatusCodeField(400200, 'Invalid Phone', description=u'非法手机号') |
|
| 19 |
+ PHONE_NOT_FOUND = StatusCodeField(400201, 'Phone Not Found', description=u'手机号不存在') |
|
| 20 |
+ PHONE_ALREADY_EXISTS = StatusCodeField(400202, 'Phone Already Exists', description=u'手机号已存在') |
|
| 21 |
+ |
|
| 22 |
+ |
|
| 23 |
+class OrderStatusCode(BaseStatusCode): |
|
| 24 |
+ """ 4040xx 订单/支付相关错误码 """ |
|
| 25 |
+ UNIFIED_ORDER_FAIL = StatusCodeField(404000, 'Unified Order Fail', description=u'统一下单失败') |
|
| 26 |
+ ORDER_NOT_FOUND = StatusCodeField(404001, 'Order Not Found', description=u'订单不存在') |
|
| 27 |
+ # 订单支付状态 |
|
| 28 |
+ ORDER_NOT_PAY = StatusCodeField(404011, 'Order Not Pay', description=u'订单未支付') |
|
| 29 |
+ ORDER_PAYING = StatusCodeField(404012, 'Order Paying', description=u'订单支付中') |
|
| 30 |
+ ORDER_PAY_FAIL = StatusCodeField(404013, 'Order Pay Fail', description=u'微信支付失败') |
|
| 31 |
+ # 通知校验状态 |
|
| 32 |
+ SIGN_CHECK_FAIL = StatusCodeField(404090, 'Sign Check Fail', description=u'签名校验失败') |
|
| 33 |
+ FEE_CHECK_FAIL = StatusCodeField(404091, 'FEE Check Fail', description=u'金额校验失败') |
|
| 34 |
+ |
|
| 35 |
+ |
|
| 36 |
+class PayStatusCode(BaseStatusCode): |
|
| 37 |
+ """ 4041xx 支付相关错误码 """ |
|
| 38 |
+ |
|
| 39 |
+ |
|
| 40 |
+class WithdrawStatusCode(BaseStatusCode): |
|
| 41 |
+ """ 4042xx 提现相关错误码 """ |
|
| 42 |
+ BALANCE_INSUFFICIENT = StatusCodeField(404200, 'Balance Insufficient', description=u'提现金额不足') |
|
| 43 |
+ |
|
| 44 |
+ |
|
| 45 |
+class TokenStatusCode(BaseStatusCode): |
|
| 46 |
+ """ 4090xx 票据相关错误码 """ |
|
| 47 |
+ TOKEN_NOT_FOUND = StatusCodeField(409001, 'Token Not Found', description=u'票据不存在') |
|
| 48 |
+ |
|
| 49 |
+ |
|
| 50 |
+class SignatureStatusCode(BaseStatusCode): |
|
| 51 |
+ """ 4091xx 签名校验错误 """ |
|
| 52 |
+ SIGNATURE_ERROR = StatusCodeField(409101, 'Signature Error', description=u'签名错误') |
|
| 53 |
+ |
|
| 54 |
+ |
|
| 55 |
+class GVCodeStatusCode(BaseStatusCode): |
|
| 56 |
+ """ 4092xx 图形验证码相关错误码 """ |
|
| 57 |
+ GRAPHIC_VCODE_ERROR = StatusCodeField(409201, 'Graphic VCode Error', description=u'图形验证码错误') |
|
| 58 |
+ |
|
| 59 |
+ |
|
| 60 |
+class SVCodeStatusCode(BaseStatusCode): |
|
| 61 |
+ """ 4093xx 短信验证码相关错误码 """ |
|
| 62 |
+ SMS_QUOTA_LIMIT = StatusCodeField(409300, 'SMS Quota Limit', description=u'短信次数超限') |
|
| 63 |
+ SMS_VCODE_ERROR = StatusCodeField(409301, 'SMS VCode Error', description=u'验证码错误,请稍后重试') |
|
| 64 |
+ SMS_VCODE_HAS_SEND = StatusCodeField(409302, 'SMS VCode Has Send', description=u'验证码已发送,请勿重复获取') |
|
| 65 |
+ |
|
| 66 |
+ |
|
| 67 |
+class InsufficientStatusCode(BaseStatusCode): |
|
| 68 |
+ """ 4095xx 不足相关错误码 """ |
|
| 69 |
+ BALANCE_INSUFFICIENT = StatusCodeField(409501, 'Balance Insufficient', description=u'余额不足') |
|
| 70 |
+ INTEGRAL_INSUFFICIENT = StatusCodeField(409502, 'Integral Insufficient', description=u'积分不足') |
|
| 71 |
+ |
|
| 72 |
+ |
|
| 73 |
+class PermissionStatusCode(BaseStatusCode): |
|
| 74 |
+ """ 4099xx 权限相关错误码 """ |
|
| 75 |
+ PERMISSION_DENIED = StatusCodeField(409900, 'Permission Denied', description=u'权限不足') |
|
| 76 |
+ UPLOAD_PERMISSION_DENIED = StatusCodeField(409910, 'Upload Permission Denied', description=u'上传权限不足') |
|
| 77 |
+ UPDATE_PERMISSION_DENIED = StatusCodeField(409930, 'Update Permission Denied', description=u'更新权限不足') |
@@ -0,0 +1,24 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from json_response import JsonpResponse, JsonResponse |
|
| 4 |
+from StatusCode import StatusCodeField |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+def response_data(status_code=200, message=None, description=None, data={}, **kwargs):
|
|
| 8 |
+ return dict({
|
|
| 9 |
+ 'status': status_code, |
|
| 10 |
+ 'message': message, |
|
| 11 |
+ 'description': description, |
|
| 12 |
+ 'data': data, |
|
| 13 |
+ }, **kwargs) |
|
| 14 |
+ |
|
| 15 |
+ |
|
| 16 |
+def response(status_code=200, message=None, description=None, data={}, msg_args=[], msg_kwargs={}, desc_args=[], desc_kwargs={}, request=None, callback=None, **kwargs):
|
|
| 17 |
+ # Final Message and Description |
|
| 18 |
+ message, description = (message or status_code.message, description or status_code.description) if isinstance(status_code, StatusCodeField) else (message, description) |
|
| 19 |
+ # Final Response Data |
|
| 20 |
+ resp_data = response_data(status_code, (message or '').format(*msg_args, **msg_kwargs), (description or '').format(*desc_args, **desc_kwargs), data, **kwargs) |
|
| 21 |
+ # Assign Callback |
|
| 22 |
+ callback = callback or (request and request.GET.get('callback'))
|
|
| 23 |
+ # Call JsonResponse or JsonpResponse |
|
| 24 |
+ return JsonpResponse(callback, resp_data, safe=False) if callback else JsonResponse(resp_data, safe=False) |
@@ -0,0 +1,6 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from django.conf import settings |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+r = settings.REDIS_CACHE |
@@ -0,0 +1 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
@@ -0,0 +1,18 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+def userinfo_save(userinfo): |
|
| 5 |
+ """ Save profile or something else """ |
|
| 6 |
+ # from account.models import UserInfo |
|
| 7 |
+ # from django.conf import settings |
|
| 8 |
+ # |
|
| 9 |
+ # unique_identifier = userinfo.get(settings.WECHAT_UNIQUE_IDENTIFICATION, '') |
|
| 10 |
+ # |
|
| 11 |
+ # user, created = UserInfo.objects.select_for_update().get_or_create(**{settings.WECHAT_UNIQUE_IDENTIFICATION: unique_identifier})
|
|
| 12 |
+ # user.unionid = userinfo.get('unionid', '')
|
|
| 13 |
+ # user.openid = userinfo.get('openid', '')
|
|
| 14 |
+ # user.nickname = userinfo.get('nickname', '')
|
|
| 15 |
+ # user.avatar = userinfo.get('headimgurl', '')
|
|
| 16 |
+ # user.save() |
|
| 17 |
+ # |
|
| 18 |
+ # return user |